XLua笔记
1、XLua强制类型转换cast(data,type)
第一个参数是需要强转的对象,第二个参数是目标类型
例如:有一个对象_resData需要强转为C#类型ResourceData。
local _resdata=_data
cast(_resdata, typeof(CS.MapTileResourceData)) 原因: xlua.cast实现了改功能,LuaEnv.cs文件中初始化了cast
cast = xlua.cast2、XLua调用带泛型函数(通过提供的xlua.get_generic_method方法调用。)
创建一个带泛型的Test函数。
//测试类
public class Test
{
private int a = 100;
//泛型方法
public int GenericMethodTest<T>(T t)
{
Debug.Log(t);
Debug.Log(typeof(T));
return a;
}
} XLua中代码如下:
//实例化Test类
local test=CS.Test.Test()
//取得泛型方法 CS.Test为命名空间
local testGenericFunc=xlua.get_generic_method(CS.Test.Test,"GenericMethodTest")
//为泛型方法指定类型
local realFunc=testGenericFunc(typeof(CS.System.Int32))
//调用 若泛型方法为静态,则无需传第一个实例参数
realFunc(test,5) local YKApplication_Ins = CS.YoukiaUnity.App.YKApplication.Instance
local _SceneManagers = xlua.get_generic_method(CS.YoukiaUnity.App.YKApplication, "GetManager")
local _temp = _SceneManagers(CS.YoukiaUnity.Scene.SceneManager)
local _SceneManager =_temp(YKApplication_Ins)引用:XLua学习
https://github.com/Tencent/xLua/commit/fa1b6d85557a525c920bef75dda91da6e8e99454
3、值类型强转
原因:Xlua的C#代码中找到一个类RawObject.cs,实现了几个强转的函数。
CS.XLua.Cast.Int32(_finalDamage)4、Xlua重写C#的属性
直接重写get_XXX(),或set_XXX()方法。
C# 中属性的本质,编译成中间语言后是 get、set 两个方法,调用属性实际上是调用 get 或 set 方法。get 对应名为“get_属性名”的方法,set 对应名为“set_属性名"的方法。
5、带有ref out 参数的函数
函数返回值返回refout的值。
页:
[1]