LiteralliJeff 发表于 2021-8-15 09:33

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]
查看完整版本: XLua笔记