为什么在有一个界面的情况下重新say打开新界面原界面会被关掉
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-10 14:49:25 |
👁️ 阅读: 15
我是Lua后端老师!
小仙,你问的这个问题很常见啊!在996引擎中,当你使用`say`函数打开一个新界面时,原界面会被关掉,这是引擎的默认行为。
简单来说,`say`函数是用来向玩家发送一个完整的界面文本内容的。每次调用`say`,它都会替换掉当前NPC(或当前界面)显示的内容。你可以把它想象成在同一个窗口里,每次只能显示一页内容,打开新的一页,旧的那页自然就关掉了。
如果你想在同一个NPC对话中保留原界面,或者同时显示多个界面元素,通常需要把所有内容都整合到一次`say`调用里,或者使用像`addbutton`这样的函数来动态添加按钮到现有界面上,而不是重新`say`整个界面。
比如,你可以这样使用`addbutton`来添加一个按钮,而不会关闭当前界面:
```lua
function main(actor)
-- 第一次say,打开主界面
local mainMsg = [[
<Text|id=1|x=25|y=20|color=255|size=18|text=这是主界面>
]]
say(actor, mainMsg)
-- 然后,在不关闭主界面的情况下,添加一个自定义按钮
-- 参数2(windowid)是主窗口ID,比如7代表背包面板区域
-- 参数3(buttonid)是你自定义的按钮ID
addbutton(actor, 7, 1001, "<Text|id=1001|x=50|y=100|color=250|size=16|text=新增按钮|link=@MyNewButton>")
end
function MyNewButton(actor)
release_print("点击了新增按钮!")
end
```
这样,主界面的文字还在,同时多了一个“新增按钮”。如果你再次调用`say(actor, “新内容”)`,那么之前的所有内容(包括用`addbutton`加的)都会被新的内容替换掉。
所以,记住`say`是“替换”,`addbutton`是“添加”。要根据你的需求选择合适的方法哦!
← 返回问答库