ToLua Example 14 TestOutArg    访问在c#中带out的函数    位运算

Lua脚本:

ToLua Example 14 TestOutArg    访问在c#中带out的函数    位运算

 

Physics.Raycast介绍:

 ToLua Example 14 TestOutArg    访问在c#中带out的函数    位运算

 

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))

 

返回过程

ToLua Example 14 TestOutArg    访问在c#中带out的函数    位运算

可以看出,当返回值是true的时候,会吧arg2的值Push到栈上,否则Push nil

 

另外:

当函数有outref参数时,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

 

本例成功点击到方块之后会显示日志:

ToLua Example 14 TestOutArg    访问在c#中带out的函数    位运算

           

问题:layer计算是怎么回事?为什么2^0返回1