问题
使用World Of Warcrafts lua API中的UnitClass()函数时出现奇怪的情况。它返回零。它的参数是“目标名称”,请参阅参考here
如果我重新加载,我确实得到了我期望的价值。所以发生了以下情况:
我认为发生了什么
我想我需要等待一个特定的事件,但不确定是什么事件。如果我从聊天窗口调用相同的脚本,我在登录或重新加载后会得到值,这就是我认为它应该从我的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"))
所以你可以看到我的意图是返回颜色表并分配给characterClassColor,但是我从getUnitClassColor中的class和classFileName变量得到的只是nill。
对此的想法?我一直在查看API文档中的事件,看看我是否遗漏了任何明显的事情。
答案 0 :(得分:2)
我通过删除GetUnitClassColor(UnitName)
函数并简单地调用print(UnitClass("player"))
来解决这个问题。猜猜有一些内部逻辑我没有看到UnitClass在加载时无法处理实际玩家的名字,但确实认识到“玩家”