Unity3d 开发技术Unity游戏编程研究院

[Unity]使用Slua框架开发创建Unity引擎中的对象

2015-09-16  本文已影响13764人  肖浩呗

[Unity]技术学习路线图(长期更新)

接上篇《[Unity]使用Slua框架开发Unity项目的重要步骤》

下载与安装

主要的内容包括

创建新的Unity工程并且导入SLua框架

由于使用Lua编写Unity项目时,无法与C#相比的是对象函数或者对象属性的智能提示不够健全.

所以在此贴出Slua框架中注入LuaState状态机对象内的一些UnityEngine的函数和属性.

static public void reg(IntPtr l) {
        getTypeTable(l,"UnityEngine.GameObject");
        addMember(l,GetComponent);
        addMember(l,GetComponentInChildren);
        addMember(l,GetComponentInParent);
        addMember(l,GetComponents);
        addMember(l,GetComponentsInChildren);
        addMember(l,GetComponentsInParent);
        addMember(l,SetActive);
        addMember(l,CompareTag);
        addMember(l,SendMessageUpwards);
        addMember(l,SendMessage);
        addMember(l,BroadcastMessage);
        addMember(l,AddComponent);
        addMember(l,CreatePrimitive_s);
        addMember(l,FindGameObjectWithTag_s);
        addMember(l,FindWithTag_s);
        addMember(l,FindGameObjectsWithTag_s);
        addMember(l,Find_s);
        addMember(l,"transform",get_transform,null,true);
        addMember(l,"layer",get_layer,set_layer,true);
        addMember(l,"activeSelf",get_activeSelf,null,true);
        addMember(l,"activeInHierarchy",get_activeInHierarchy,null,true);
        addMember(l,"isStatic",get_isStatic,set_isStatic,true);
        addMember(l,"tag",get_tag,set_tag,true);
        addMember(l,"gameObject",get_gameObject,null,true);
        createTypeMetatable(l,constructor, typeof(UnityEngine.GameObject),typeof(UnityEngine.Object));
    }
- **只有函数指针位置的部分,在Lua中定义成了Table变量内的函数,例如:`cube:AddCommponent`**
- **在函数指针名的末尾部分以`_s`结尾的,在Lua中定义成了元表变量内的函数,例如:`GameObject.CreatePrimitive`**
- **在添加成员时,包含了类似于`"transform"`字符串的,在Lua中定义成了Table变量内的键值对属性,例如:`cube.transform`**
上一篇 下一篇

猜你喜欢

热点阅读