第一部分:Xlua调用C#
--Lua获取C#类
local GameObjectClass = CS.UnityEngine.GameObject
--使用C#类New新对象
local newGameObj = GameObjectClass('helloworld')
print(GameObjectClass, newGameObj)
--调用C#类的静态方法
local FindObj = GameObject.Find('helloworld')
--读取C#类的静态属性
print(CS.UnityEngine.Time.deltaTime)
--修改C#的静态属性
CS.UnityEngine.Time.timeScale = 0.5
Xlua调用C#方法
类型1:无参静态方法调用,无【LuaCallCSharp】标记可以直接调用
//C#代码
public class LuaEventUtility
{
public static void Init(int value)
{
Debug.LogError("value:" + value);
}
}
--Lua代码
CS.LuaEventUtility:Init(3)
相同方法有参调用成功,但参数压栈失败,尝试了把LuaEventUtility变为静态类,以及标记[LuaCallCSharp]皆无法正确传参
类型2:调用C#对象调用非静态方法
类型3:调用C#对象调用非静态方法
调用非静态方法的前提是必须在Lua层
类型2:调用C#类静态方法不需要获取dui'xia
Xlua向C#方法传方法
类型1:Lua向C#传【不带参】方法
这个没啥好说的,直接传就行了
类型2:Lua向C#传【带参】方法
这个时候调用会报错,