Lesson1_Lua调用C#_CallClass

一、 首先要通过完整的命名空间进行调用构造函数
比如unity中的Gameobject类 CS.UnityEngine.GameObject
local obj1=CS.UnityEngine.GameObject() --类名打括号就是默认调用了无参构造,这里的obj1就是一个Gameobject类型的对象
local obj2 =CS.UnityEngine.GameObject("z3")--调有参构造

二、为了方便使用且节约性能(优化),可以定义全局变量去存储C#类,这很重要,一般会写一个专门用来声明需要用到的类的Lua脚本
GameObject=CS.UnityEngine.GameObject 这样以后使用GameObject这个全局变量就跟与C#使用GameObject类一致了。
local obj3= GameObject();

三、类中的静态方法直接通过类名点出来用,成员变量就通过对象点出来
--例如:CS.UnityEngine.GameObject.Find()这一个方法
local obj4 = GameObject.Find("z3")
CS.UnityEngine.Debug.Log(obj4.transform.position)

四、使用对象中的成员方法时,得通过 : 冒号调用(self传入调用者的方式)
obj4.transform:Translate(CS.UnityEngine.Vector3.right);

五、继承了Mono的类
local obj5 = GameObject("加脚本测试")
--通过AddComponent添加脚本,Lua不能访问C#的泛型,所以只能用有type的重载了
--xlua提供了一个typeof方法可以获得一个类的Type
obj5:AddComponent(typeof(CS.LuaCallCSharp)) --这里为obj5挂载了LuaCallCsharp这一个脚本组件

posted @ 2024-02-29 10:55  波奇型蠢驴  阅读(4)  评论(0)    收藏  举报