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