World Of Warcraft LUA API UnitClass() 返回空值
2017-12-2 13:57:21
收藏:0
阅读:99
评论:1
问题
从魔兽世界的 LUA API 中使用 UnitClass() 函数时出现了奇怪的情况,它返回了空值。它的参数是“目标名称”,可以在这里查阅 参考资料
但是,如果我重新加载,我会得到预期的返回值。以下情况正在发生:
- 任何角色登录
- 打印 UnitClass() 函数调用的返回值
- 它打印出班级和职业名称的空值
- 重新加载游戏
- 打印 UnitClass() 函数调用的返回值
- 这一次,它打印出了实际数据,就像人们所期望的那样
我认为正在发生的事情
我认为我需要等待特定的事件,但不确定是哪个事件。如果我从聊天窗口调用相同的脚本,我在登录或重新加载后就能得到返回值,这是我认为它应该从我的 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
----------------------初始化----------------------------------
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 变量的空值。
对此有何想法? 我一直在查看 API 文档中的事件,看看是否有什么明显的问题。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我通过删除
GetUnitClassColor(UnitName)函数并简单地调用print(UnitClass("player"))来解决了这个问题。猜测有一些内部逻辑,我看不到 UnitClass 无法处理实际玩家名称的加载时间,但可以识别 "player"。