本文共 1274 字,大约阅读时间需要 4 分钟。
01:new C#
在 C#这样 new 一个对象: var newGameObj = new UnityEngine.GameObject(); 对应到 Lua 是这样: local newGameObj = CS.UnityEngine.GameObject() 基本类似,除了: 1、lua 里头没有 new 关键字; 2、所有 C#相关的都放到 CS 下,包括构造函数,静态成员属性、方法; 如果有多个构造函数呢?放心,xlua 支持重载,比如你要调用 GameObject 的带一个 string 参数的构造函数,这么写: local newGameObj2 = CS.UnityEngine.GameObject(‘helloworld’)创建lua脚本LuaCall.lua.txt
local newItem=CS.UnityEngine.GameObject("哈哈")
C#加载lua脚本
private LuaEnv luaEnv; void Start() { luaEnv = new LuaEnv(); luaEnv.DoString("require [[LuaCall]]"); } void OnDestroy() { luaEnv.Dispose(); }
运行结果
02:访问 C# 静态属性,方法 读静态属性 CS.UnityEngine.Time.deltaTime 写静态属性 CS.UnityEngine.Time.timeScale = 0.5 调用静态方法 CS.UnityEngine.GameObject.Find(‘helloworld’) 小技巧:如果需要经常访问的类,可以先用局部变量引用后访问,除了减少敲代码的时 间,还能提高性能: local GameObject = CS.UnityEngine.GameObject GameObject.Find(‘helloworld’)local newItem=CS.UnityEngine.GameObject("哈哈") local gameObject=CS.UnityEngine.GameObject gameObject.Find("Main Camera").name="主摄像机" print(CS.UnityEngine.Time.deltaTime)
03:访问 C# 成员属性,方法
读成员属性 testobj.DMF 写成员属性 testobj.DMF = 1024 调用成员方法 注意:调用成员方法,第一个参数需要传该对象,建议用冒号语法糖,如下 testobj:DMFunc() 父类属性,方法 xlua 支持(通过派生类)访问基类的静态属性,静态方法,(通过派生类实例)访问基 类的成员属性,成员方法print(Camera:GetComponent("Transform").position)
转载地址:http://mnrxo.baihongyu.com/