找回密码
 立即注册
    查看: 165|回复: 1

    【浮生梦】Lua 起手 前后端调用界面

    [复制链接]

    321

    主题

    66

    回帖

    1445

    积分

    积分
    1445
    发表于 2025-6-10 11:08:14 | 显示全部楼层 |阅读模式

    课程入口

    1. 基础NPC触发方式
    -- 后端触发NPC示例
    local npcID = 76
    SL:print("打开NPC:"..npcID)
    
    -- 前端接收协议示例(100号协议)
    if p1 == 100 then
        local npcTable = {
            [76] = {name = "合成系统", item = "木剑1"},
            [77] = {name = "强化系统", item = "木剑2"},
            [78] = {name = "升级系统", item = "木剑3"}
        }
        local currentNPC = npcTable[tonumber(p2)]
        if currentNPC then
            -- 创建界面逻辑
        end
    end
    
    1. 前端界面创建流程
    -- 1. 创建父节点
    local parent = GUI:Win_Create("NPCWindow", 0, 0, 1136, 640, false, false, true, false, false, false, 1)
    
    -- 2. 加载UI文件
    GUI:LoadExport(parent, "game_npc_window")
    
    -- 3. 获取子控件
    local ui = GUI:ui_delegate(parent)
    if ui then
        -- 设置文本内容
        GUI:setText(ui.Text_desc, currentNPC.name)
        
        -- 设置按钮事件
        GUI:addOnClickEvent(ui.Button_close, function()
            GUI:Win_Close(parent)
        end)
    end
    
    1. 重要知识点总结:
    • 协议通信:后端通过100号协议触发前端界面
    • 组件封装:建议在前端进行UI组件封装
    • 自适应布局:使用GUI:setAnchorPoint()设置锚点
    • 节点操作:通过GUI:getChildByName()获取子节点
    • 数据传递:用table结构管理NPC数据
    1. 常见问题解决方案:
    -- 乱码问题:确保文件编码为UTF-8
    -- 节点获取不到:检查GUI:Win_IsNotNull()判断
    -- 协议不触发:检查协议号是否冲突
    -- 位置异常:使用GUI:setPosition()调整坐标
    
    1. 最佳实践建议:
    • 使用SL:ScheduleOnce()处理延迟操作
    • 重要操作前用GUI:Win_IsNull()做空判断
    • 复杂界面建议分模块开发
    • PC端注意GUI:setSwallowRightMouseTouch()

    0

    主题

    0

    回帖

    -20

    积分

    积分
    -20
    发表于 2025-6-10 11:08:15 | 显示全部楼层
    嘻嘻~同学你好呀!(◕‿◕✿) 来学习Lua脚本啦~让我看看你分享的内容呢~

    哇!同学你整理的这些内容好棒棒哦!(*´∀`)~♥ 我来帮你梳理一下重点呢~

    关于前后端调用界面课程入口呢:
    1. 后端触发NPC的写法很标准呢~
    2. 前端接收协议的示例也很清晰,用table管理NPC数据是个好习惯!

    创建界面的流程也很完整呢:
    1. -- 创建父节点
    2. local parent = GUI:Win_Create(...)
    3. -- 加载UI文件
    4. GUI:LoadExport(parent, "game_npc_window")
    5. -- 获取子控件
    6. local ui = GUI:ui_delegate(parent)
    复制代码

    同学要注意的几个小细节哦:
    1. 协议通信要确保前后端协议号一致呢
    2. UI组件封装确实能让代码更整洁~
    3. 自适应布局很重要,不然在不同设备上会显示不正常呢

    常见问题解决方案也总结得很好呢!特别是乱码问题和节点获取问题,经常有同学遇到呢~

    最后的最佳实践建议也超实用:
    1. 延迟操作用SL:ScheduleOnce()很专业呢
    2. 空判断是必须的,不然会报错呢
    3. 分模块开发确实能让代码更清晰

    同学要继续加油哦!(๑•̀ㅂ•́)و✧ 有什么不懂的随时问我啦~我会像小太阳一样温暖地解答你的问题呢!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则