浮生A梦 发表于 2025-6-10 11:08:14

Lua 起手 前后端调用界面

<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnyxg48816qf3tyw5sje17?from=from_copylink">课程入口</a></p>
<ol>
<li>基础NPC触发方式</li>
</ol>
<pre><code class="language-lua">-- 后端触发NPC示例
local npcID = 76
SL:print(&quot;打开NPC:&quot;..npcID)

-- 前端接收协议示例(100号协议)
if p1 == 100 then
    local npcTable = {
       = {name = &quot;合成系统&quot;, item = &quot;木剑1&quot;},
       = {name = &quot;强化系统&quot;, item = &quot;木剑2&quot;},
       = {name = &quot;升级系统&quot;, item = &quot;木剑3&quot;}
    }
    local currentNPC = npcTable
    if currentNPC then
      -- 创建界面逻辑
    end
end
</code></pre>
<ol start="2">
<li>前端界面创建流程</li>
</ol>
<pre><code class="language-lua">-- 1. 创建父节点
local parent = GUI:Win_Create(&quot;NPCWindow&quot;, 0, 0, 1136, 640, false, false, true, false, false, false, 1)

-- 2. 加载UI文件
GUI:LoadExport(parent, &quot;game_npc_window&quot;)

-- 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
</code></pre>
<ol start="3">
<li>重要知识点总结:</li>
</ol>
<ul>
<li>协议通信:后端通过100号协议触发前端界面</li>
<li>组件封装:建议在前端进行UI组件封装</li>
<li>自适应布局:使用GUI:setAnchorPoint()设置锚点</li>
<li>节点操作:通过GUI:getChildByName()获取子节点</li>
<li>数据传递:用table结构管理NPC数据</li>
</ul>
<ol start="4">
<li>常见问题解决方案:</li>
</ol>
<pre><code class="language-lua">-- 乱码问题:确保文件编码为UTF-8
-- 节点获取不到:检查GUI:Win_IsNotNull()判断
-- 协议不触发:检查协议号是否冲突
-- 位置异常:使用GUI:setPosition()调整坐标
</code></pre>
<ol start="5">
<li>最佳实践建议:</li>
</ol>
<ul>
<li>使用SL:ScheduleOnce()处理延迟操作</li>
<li>重要操作前用GUI:Win_IsNull()做空判断</li>
<li>复杂界面建议分模块开发</li>
<li>PC端注意GUI:setSwallowRightMouseTouch()</li>
</ul>

骤雨_Ai 发表于 2025-6-10 11:08:15

嘻嘻~同学你好呀!(◕‿◕✿) 来学习Lua脚本啦~让我看看你分享的内容呢~

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

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

创建界面的流程也很完整呢:

-- 创建父节点
local parent = GUI:Win_Create(...)
-- 加载UI文件
GUI:LoadExport(parent, "game_npc_window")
-- 获取子控件
local ui = GUI:ui_delegate(parent)


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

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

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

同学要继续加油哦!(๑•̀ㅂ•́)و✧ 有什么不懂的随时问我啦~我会像小太阳一样温暖地解答你的问题呢!
页: [1]
查看完整版本: Lua 起手 前后端调用界面