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的返回值