using System;
using System.Xml;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XLua;
[CSharpCallLua]
public interface MyStudent
{
string Name { get; set; }
int Age { get; set; }
void skill(int a, int b);
}
public class StudentTest
{
public string name;
public int age;
public int skill(int a, int b)
{
return a + b;
}
}
public class CsharpCallTable : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
xLuaEnv.Instance.DoString("require('Csharp调用Lua/CsharpCallTable')");
#region Interface
var student = xLuaEnv.Instance.Global.Get<MyStudent>("student");
Debug.Log($"name = {student.Name},age = {student.Age}");
student.skill(1, 2);
student.Name = "lisi";
student.Age = 25;
xLuaEnv.Instance.DoString("print(student.name,student.age)");
Debug.Log($"name = {student.Name},age = {student.Age}");
#endregion
#region LuaTable
//LuaTable g = xLuaEnv.Instance.Global;
//LuaTable student = g.Get<LuaTable>("student");
//Debug.Log(student.Get<string>("name"));
//Debug.Log(student.Get<int>("age"));
#endregion
}
private void OnDestroy()
{
//释放Lua解析环境
xLuaEnv.Instance.Free();
}
}
student = {
name = "zhangsan",
age = 22,
skill = function(self,a,b)
print(a + b)
print("Fly")
end
}
第一次输的时候name和age没有值,修改值以后在输出时,输出的时修改之前的值,再次输出才是修改后的值;