報錯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腳本中,調(diào)用函數(shù)應(yīng)該用冒號,而我用的點
Lua中,點和冒號的區(qū)別:點擊查看點和冒號的區(qū)別
由這個錯誤延伸開的:
expect self,but get null,報這個錯誤的原因是什么呢?
根據(jù)點和冒號的區(qū)別,我們可以知道我報錯的原因是用了點,卻沒有傳入對象,所以他找不到對象。通過跟進代碼,可以看到在checkSelf方法的時候,函數(shù)根據(jù)內(nèi)存地址(雖然沒有傳這個參數(shù),但竟然有值)去SLua.ObjectCache中尋找,找不到,報了這個錯。