首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >魔兽世界的每一个画面都是全球性的吗?

魔兽世界的每一个画面都是全球性的吗?
EN

Stack Overflow用户
提问于 2022-06-10 00:34:32
回答 2查看 243关注 0票数 0

我正在创建我的第一个WoW插件,在我的研究中,我读到在WoW中创建的每一个帧都是全球性的,这确实让我感到困惑。

我见过很多只执行f=CreateFrame(.)的加载项,所以这些加载项不会一直相互冲突吗?

这可能有一个简单的解释,很抱歉,如果这个问题有点傻,但如果有人能为我澄清这一点,我会非常感激的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-10 01:27:52

从XML文件创建的每个帧都是全局的,因此可以从Lua文件访问它们。

  • hello.toc

代码语言:javascript
复制
## Interface: 90205
## Version: 1.0.0
## Title: Hello

hello.xml

  • hello.xml

代码语言:javascript
复制
<Ui>
    <Script file="hello.lua"/>
    <Frame name="HelloWorldFrame"> <!-- global frame -->
        <Scripts>
            <OnLoad>
                HelloWorld_OnLoad(self)
            </OnLoad>
            <OnEvent>
                HelloWorld_OnEvent(self, event, ...)
            </OnEvent>
        </Scripts>
    </Frame>
</Ui>

  • hello.lua

代码语言:javascript
复制
function HelloWorld_OnLoad(self)
    print("Loaded HelloWorldFrame")
    self:RegisterEvent("CHAT_MSG_SAY")
end

function HelloWorld_OnEvent(self, event, ...)
    print("Your character said something", event, ...)
end

如果您只使用一个Lua文件并在那里创建您的框架,那么您不一定需要使它成为全局的。

代码语言:javascript
复制
local function OnEvent(self, event, ...)
    print("Your character said something", event, ...)
end

local f = CreateFrame("Frame")
f:RegisterEvent("CHAT_MSG_SAY")
f:SetScript("OnEvent", OnEvent)

--我见过很多只做f=CreateFrame(.)的加载项,所以它们不会一直相互冲突吗?

只要他们把它变成本地的,他们就不会冲突。如果每个人都建立了一个全局f框架,那么它就会发生冲突,是的。

票数 1
EN

Stack Overflow用户

发布于 2022-06-10 01:09:29

我对魔兽世界一无所知,但是我对Lua非常熟悉,我觉得我可以回答这个问题。如果默认情况下框架被放置在全局环境中,那么您发布的代码示例:

代码语言:javascript
复制
f = CreateFrame(...)

不会产生这样的“冲突”本身--该框架可以简单地分配给f两次,或者一次分配给f,一次分配给传递给CreateFrame的任何名称。

这在Lua本身中不会造成任何问题,因为变量赋值是动态的,因此您可以使用这些值做任何您想做的事情。覆盖已经设置的变量不是问题,旧值将被释放并自动回收垃圾,或者如果旧值和新值是相同的引用,什么都不会发生。

如果您曾经看到返回值被分配给局部变量,例如函数内部的local f = CreateFrame(...),那么程序员使用局部变量而不是全局名称可能只是风格问题。

如果我正确地假定该函数设置了一个全局变量,但也返回了该值,那么它可能像您所观察到的那样是多余的,但是它是无关紧要的,也就是说它不会造成任何问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72567966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档