Lua脚本
我们提供Lua脚本作为开发语言,开发者可以通过Lua脚本编写逻辑或调用Unity的功能。
XLua
我们的Lua封装基于XLua实现,对于其一般性的用法,开发者可以参考XLua官方了解更多内容。
由于XLua的官方实现不支持asmdef,我们对其进行了一定的修改。
Luafab
Luafab:即根节点挂载了MiniBehaviour组件的Unity Prefab,它引用了一个同名的Lua脚本文件,作为该Prefab的逻辑脚本。
信息
在luafab文件夹中,prefab与lua脚本通常应该一一对应。
同时,prefab中根节点的MiniBehaviour对应lua脚本返回的MiniScript类,prefab中的非根节点可以对应lua脚本中内置的其它MiniScript类。

MiniScript
在Lua脚本中,开发者可以使用MiniScript来实现类似MonoBehaviour的功能。
local reflect = require "reflect" -- reflect模块提供一些用来与Unity交互的功能
-- 定义一个MiniScript类,名称为ItemCls
local ItemCls = reflect.MiniScript({
foo={CS.UnityEngine.GameObject, "path/to/capsule"}, -- 定义foo字段,foo字段声明的是一个节点路径,它的值是path/to/capsule这个节点的GameObject对象
bar={CS.UnityEngine.Sprite, nil, "avatar.jpg"}, -- 定义bar字段,bar字段声明的是一个资源路径,它的值为avatar.jpg这个Sprite资源
})
-- 注册ItemCls类的MonoBehaviour事件Awake和Start
function ItemCls:Awake()
print("ItemCls Awake")
-- 其中,this,transform,gameObject, context为固有字段,
print(self.this) -- self.this为该节点的MiniBehaviour对象,
print(self.transform) -- self.transform为该节点的Transform对象,
print(self.gameObject) -- self.gameObject为该节点的GameObject对象
print(self.context) -- self.context 为MiniContext
end
function ItemCls:Start()
end
return ItemCls -- 返回ItemCls类
目前支持的MonoBehaviour行为包括:
- 基本事件Awake,Start,OnEnable,OnDisable,OnDestroy
- 更新事件Update,FixedUpdate,LateUpdate
- 2D物理事件OnTriggerEnter2D,OnTriggerStay2D,OnTriggerExit2D,OnCollisionEnter2D,OnCollisionStay2D,OnCollisionExit2D
- 3D物理事件OnTriggerEnter,OnTriggerStay,OnTriggerExit,OnCollisionEnter,OnCollisionStay,OnCollisionExit
- EventSystem交互事件OnInitializePotentialDrag,OnBeginDrag,OnDrag,OnEndDrag,OnDrop,OnPointerDown,OnPointerClick,OnPointerUp,
- Visible事件:OnBecameVisible,OnBecameInvisible