lua语法调用C#语法只要区分调用的C#方法是静态与非静态即可
若lua调用的是C#静态方法使用“ . ”调用
若lua调用的是C#非静态方法使用“ : ”调用
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;
[LuaCallCSharp]
public class LuaManager : MonoBehaviour {
public static LuaManager Instance;
private void Awake()
{
Instance = this;
}
//新键lua对象
private LuaEnv luaEnv;
//创建一个lua表,用于传递数据
LuaTable scriptEnv;
void Start()
{
luaEnv = new LuaEnv();
//创建一个lua表
scriptEnv = luaEnv.NewTable();
//创建lua元表
LuaTable meta = luaEnv.NewTable();
//向元表中添加元数据
meta.Set("__index", luaEnv.Global);
//在lua脚本中直接用self就可以调用this,即当前当前cs脚本对象
scriptEnv.Set("self", this);
//设置元表
scriptEnv.SetMetaTable(meta);
LoadLuaScript();
}
//加载lua脚本的方法
public void LoadLuaScript()
{
//动态加载lua脚本
string luaPath = Application.dataPath+ "/LuaScriptTest.lua.txt";
string luaText = File.ReadAllText(luaPath);
luaEnv.DoString(luaText, "LuaManager", scriptEnv);//执行lua脚本
}
public void FeiJingtai(string str)//非静态方法
{
print(str);
}
public static void Jingtai(string str)//静态方法
{
print(str);
}
lua脚本
CS.LuaManager.Instance:FeiJingtai("非静态")
CS.LuaManager.Jingtai("静态")
输出结果为
非静态
静态