魔兽世界lua api unitclass()返回零值



问题

从魔兽世界lua api世界上消费unitclass()功能时的奇怪情况。它正在返回零。它的参数是"目标名称",请参阅此处的引用

如果我重新加载,我确实会像我期望的那样获得一个价值。因此,以下情况正在发生:

  1. 使用任何字符登录
  2. print()来自unitclass()函数调用的返回值
  3. 它打印出班级和className的nill
  4. /重新加载游戏
  5. print()来自unitclass()函数调用的返回值
  6. 这次打印出实际数据,正如人们所期望的

我认为正在发生的事情

我认为我需要等待特定事件,虽然不确定什么事件。如果我从聊天窗口中调用相同的脚本,则在登录或重新加载后会收回值,这就是我认为它应该从LUA脚本

使用的方式。

代码

classcolors.lua

function GetUnitClassColor(UnitName)
    local class, classFileName = UnitClass(UnitName)
    local color = RAID_CLASS_COLORS[classFileName]
    print(class)
    print(classFileName)
    return color
end

core.lua(具有我的初始化代码)

function GetCharacterData()
    local playerName = UnitName("Player")
    local playerRealm = GetRealmName()
    local playerNameRealm = playerName .. '-' .. playerRealm
    return playerNameRealm
end
----------------------Initialize----------------------------------
    local mainFrame = CreateFrame("Frame")
    mainFrame:RegisterEvent("ADDON_LOADED")
    mainFrame:RegisterEvent("PLAYER_LOGOUT")
    mainFrame:SetScript("OnEvent", function(self, event, arg1)
        local currentCharacter = GetCharacterData()
        local newCharacter = true
        if event == "ADDON_LOADED" and arg1 == "MyAddOn" then   
            local characterClassColor        = GetUnitClassColor(UnitName("Player"))

因此,您可以看到我的意图是将颜色表返回并分配给targinclassColor,但是我一无所获,只是从class和classfilename变量中的nill中恢复了getunitclasscolor中的nill。

对此的想法?我一直在查看API文档中的事件,看看我是否缺少明显的东西。

我通过删除GetUnitClassColor(UnitName)函数并简单地调用print(UnitClass("player"))来解决此问题。猜猜我没有看到一些内部逻辑在加载时间无法处理实际播放器的名称的位置,但确实识别" player"

最新更新