ToLua在lua中使用射线检测和out参数
using UnityEngine;
using LuaInterface;

public class TestOutArg : MonoBehaviour 
{            
    string script =
        @"                                
                                                                            
            function TestPick(pos)    
                local camera = UnityEngine.Camera.main
                local ray  = camera:ScreenPointToRay(pos)
                local _layer = 2 ^ LayerMask.NameToLayer('Default')                        
                local flag, hit = UnityEngine.Physics.Raycast(ray, nil, 5000, _layer)                                            
                                
                if flag then
                    print('pick from lua, point: '..tostring(hit.point))                                        
                end
            end
        ";

    LuaState state = null;
    LuaFunction func = null;

    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))
        {
            func.BeginPCall();
            func.Push(Input.mousePosition);
            func.PCall();
            func.EndPCall();
        }

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

    void OnDestroy()
    {
        func.Dispose();
        func = null;

        state.Dispose();
        state = null;
    }
}


涉及out参数的,直接传nil,它会以返回值的形式返回,注意第一个返回值为状态,第二个开始才是out的返回值


首页 我的博客
粤ICP备17103704号