ToLua的Example示例学习笔记14_Out

2020-05-13  本文已影响0人  凌枫望星月

展示了Lua访问在C#中带out参数的函数。

1」代码

操作代码如下:

            local box = UnityEngine.BoxCollider
                                                                            
            function TestPick(ray)                                                                  
                local _layer = 2 ^ LayerMask.NameToLayer('Default')                
                local time = os.clock()                                                  
                local flag, hit = UnityEngine.Physics.Raycast(ray, nil, 5000, _layer)                                              
                --local flag, hit = UnityEngine.Physics.Raycast(ray, RaycastHit.out, 5000, _layer)                                
                                
                if flag then
                    print('pick from lua, point: '..tostring(hit.point))                                        
                end
            end 

c#代码如下:

    void Start () 
    {
        new LuaResLoader();
        state = new LuaState();
        LuaBinder.Bind(state);
        state.Start();
        state.DoString(script, "TestOutArg.cs");
        func = state.GetFunction("TestPick");        
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Camera camera = Camera.main;
            Ray ray = camera.ScreenPointToRay(Input.mousePosition);                  
            RaycastHit hit;
            bool flag = Physics.Raycast(ray, out hit, 5000, 1 << LayerMask.NameToLayer("Default"));            

            if (flag)
            {
                Debugger.Log("pick from c#, point: [{0}, {1}, {2}]", hit.point.x, hit.point.y, hit.point.z);
            }

            func.BeginPCall();
            func.Push(ray);
            func.PCall();
            func.EndPCall();
        }

        state.CheckTop();
        state.Collect();
    }  

2」需要了解的部分

上一篇下一篇

猜你喜欢

热点阅读