lua调用C#大部分是通过:“CS.命名空间.类” 这样的方式调用的,当获得类之后通过:"类名()"的方式创建出类的对象从而调用类中的方法(静态方法直接 "类名."), 对于成员变量的调用是通过 "." 的方式去调用,而成员方法是通过 ":" 的方式去调用,这便是一般情况。
而部分lua中的一些运算符是不支持C#中的一些功能的,比如数组的获取[]之类的,但是可以直接用对应命名空间下类的方法去获取,另一部分则是xlua为了兼容C#的功能而做的封装比如,比如lua中的数值类型只有number,无法区分float,int,double之类的不同精度的类型,所以xlua通过了一个套路,首先通过 “函数1 = typeof(类名):GetMethod("函数名", {typeof(函数的参数类型),...,..})”的方式来获取C#中的函数,之后通过 “lua函数 = xlua.tofunction(函数1)”将C#中的函数转为lua可以运行的函数,调用方法为 “lua函数(函数类的对象,函数的参数)”。
下面是调用不同类型所存在的不同点的总结
一.类
类要注意的点就是 " 静态与非静态" "成员变量与成员函数"的调用问题
1.静态的可以通过"类名." 的方式来调用
2.非静态的成员变量需要通过:"对象.变量" 的方式来调用
3.非静态的成员函数则需要通过:"对象:函数()" 的方式来调用
如果要给游戏对象动态添加脚本则需要使用函数&