报错Lua脚本如下:
import "UnityEngine"
local aa = FinderFactory:GetInstant()
aa.Generate("")
报错如下:
[string "..."]:4: System.Exception: expect self, but get null
at SLua.LuaObject.checkSelf (IntPtr l) [0x00014] in E:\ARMasterUnityGit\ARMasterUnity\Assets\Plugins\Slua_Managed\LuaObject.cs:1354
at Lua_FinderFactory.Generate (IntPtr l) [0x00003] in E:\ARMasterUnityGit\ARMasterUnity\Assets\Slua\LuaObject\Custom\Lua_FinderFactory.cs:39
stack traceback:
[C]: in function 'assert'
[string "..."]:4: in function 'Generate'
[string "temp buffer"]:10: in main chunk
出错原因:
Lua脚本中,调用函数应该用冒号,而我用的点
Lua中,点和冒号的区别:点击查看点和冒号的区别
由这个错误延伸开的:
expect self,but get null,报这个错误的原因是什么呢?
根据点和冒号的区别,我们可以知道我报错的原因是用了点,却没有传入对象,所以他找不到对象。通过跟进代码,可以看到在checkSelf方法的时候,函数根据内存地址(虽然没有传这个参数,但竟然有值)去SLua.ObjectCache中寻找,找不到,报了这个错。