目录
前言
在Tolua中,C#脚本如何调用Lua脚本,同时,Lua脚本又是如何调用C#脚本呢,现在我们最简单的方式实现一下。
一、下载Tolua
下载链接:GitHub - topameng/tolua: The fastest unity lua binding solution
如何下载:
1.我是通过visuil studio方式下载导入的,复制链接后,大家也可以通过别的方式下载。
2.打开visuil studio
3.最后从unity hub中,打开下载的路径就OK了。打开之后,点击确定就行。
4.完成之后,就像这样。
二、开始编写C#脚本和Lua脚本
1.C#脚本
TestCToLua.cs 代码如下(示例):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuaInterface;
public class TestCToLua : MonoBehaviour
{
LuaState lua = null;
LuaFunction luaFunc = null;
void Start()
{
new LuaResLoader();
lua = new LuaState();
lua.Start();
LuaBinder.Bind(lua);
string path = Application.dataPath + "/Lua";//lua文件位置
lua.AddSearchPath(path);
lua.DoFile("TestLuaToc.lua"); //lua脚本名字,需要带后缀名
CallFunc("TestLuaToc.Start", gameObject); //调用lua中的函数
}
void CallFunc(string func, GameObject obj)
{
luaFunc = lua.GetFunction(func);
luaFunc.Call(obj);
luaFunc.Dispose();
luaFunc = null;
}
void Update()
{
//CallFunc("TestLuaToc.Update", gameObject); //调用lua中的函数
}
public void TestC()
{
Debug.Log("Lua调用C#方法");
}
}
2.Lua脚本
TestLuaToC.lua 代码如下(示例):
TestLuaToc = { }
local GameObject = UnityEngine.GameObject
local this = TestLuaToc
local game
local testCToLua
function this.Start()
print('start')
game = GameObject.Find("GameObject")
testCToLua = game : GetComponent('TestCToLua')
testCToLua : TestC()
end
function this.Update()
print('Update');
end
3.测试结果
把c#脚本随意挂载在物体上。注意:挂在物体名字需要和Lua脚本中Find()方法中参数保持一致。
同时想要在Lua脚本中调用C#脚本,还需要最重要的一步
等待几秒后,点击确定即可
最后unity运行,可以看到结果,C#脚本在Start()方法中调用了Lua脚本中的Start()方法,打印了“start”,而Lua脚本在此方法中调用了C#脚本中的TestC()方法,打印了“Lua调用C#方法”。