原理:c#调用lua, 是c# 通过P/Invoke方式调用了lua的dll(一个C库),然后这个dll执行了lua脚本。
(P/Invoke的全称是Platform Invoke (平台调用) 它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数 )
Lua调用C#
将C#方法注册到Lua虚拟机中(LuaState.RegisterFunction)
在lua中就可以通过注册的方法名调用C#方法
C#调用Lua
在C#中加载lua文件(LuaState.DoFile)
拿到目标函数(LuaState.GetFunction)
调用目标函数(LuaFunction.Call)
示例代码
///CSharpLuaTest.cs
public class CSharpLuaTest : MonoBehaviour {
private LuaState luaState = new LuaState(); // 创建lua虚拟机
void Start ()
{
// 在lua虚拟机(全局)中注册自定义函数
this.luaState.RegisterFunction("CSharpMethod", this, this.GetType().GetMethod("CSharpMethod"));
// 加载lua文件(绝对路径)
this.luaState.DoFile(Application.streamingAssetsPath + "/Test.lua");
// 加载完文件后,使用GetFunction获取lua脚本中的函数,再调用Call执行。
ob