今天遇到一个让人哭笑不得的问题,就是我在lua中调用Physics.OverlapSphereNonAlloc一直都检测不到范围内的Collider物体,缓冲的数组也有10的大小,不可能说获取不到的。后面想了想,那应该就是生成Wrap有问题了,结果一看
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int OverlapSphereNonAlloc(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 3) { UnityEngine.Vector3 arg0 = ToLua.ToVector3(L, 1); float arg1 = (float)LuaDLL.luaL_checknumber(L, 2); UnityEngine.Collider[] arg2 = null; int o = UnityEngine.Physics.OverlapSphereNonAlloc(arg0, arg1, arg2); LuaDLL.lua_pushinteger(L, o); return 1; } else { return LuaDLL.luaL_throw(L, "invalid arguments to method: UnityEngine.Physics.OverlapSphereNonAlloc"); } } catch (Exception e) { return LuaDLL.toluaL_exception(L, e); } }
哈哈哈,它把缓冲数组直接传null了,并不是我传过来的数组,改成这样就好了
UnityEngine.Collider[] arg2 = ToLua.CheckObjectArray<UnityEngine.Collider>(L, 3);