ToLua Example 14 TestOutArg 访问在c#中带out的函数 位运算
Lua脚本:
Physics.Raycast介绍:
Raycast参数不一样,四个参数的就有两种
public static bool Raycast(Ray ray, RaycastHit hitInfo, float distance, int layerMask);
public static bool Raycast(Ray ray, float distance, int layerMask);
public static bool Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask);
public static bool Raycast(Vector3 origin, Vector3 direction, RaycastHit , float distance ,int layerMask );
UnityEngine_PhysicsWrap.Raycast.try中对参数进行检查:
else if (count == 4 && TypeChecker.CheckTypes<UnityEngine.Vector3, UnityEngine.Vector3, LuaInterface.LuaOut<UnityEngine.RaycastHit>, float>(L, 1))
返回过程
可以看出,当返回值是true的时候,会吧arg2的值Push到栈上,否则Push nil
另外:
当函数有out或ref参数时,out参数和ref参数和函数的返回值一起返回,并且调用函数时out参数不需要传入,比如:
-- calling int obj::OutMethod1(int,out int,out int)
retVal,out1,out2 = obj:OutMethod1(inVal)
-- calling void obj::OutMethod2(int,out int)
retVal,out1 = obj:OutMethod2(inVal) -- retVal ser´a nil
-- calling int obj::RefMethod(int,ref int)
https://www.cnblogs.com/sifenkesi/p/3901831.html
本例成功点击到方块之后会显示日志:
问题:layer计算是怎么回事?为什么2^0返回1?