跳到主要内容

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行为包括:

  1. 基本事件Awake,Start,OnEnable,OnDisable,OnDestroy
  2. 更新事件Update,FixedUpdate,LateUpdate
  3. 2D物理事件OnTriggerEnter2D,OnTriggerStay2D,OnTriggerExit2D,OnCollisionEnter2D,OnCollisionStay2D,OnCollisionExit2D
  4. 3D物理事件OnTriggerEnter,OnTriggerStay,OnTriggerExit,OnCollisionEnter,OnCollisionStay,OnCollisionExit
  5. EventSystem交互事件OnInitializePotentialDrag,OnBeginDrag,OnDrag,OnEndDrag,OnDrop,OnPointerDown,OnPointerClick,OnPointerUp,
  6. Visible事件:OnBecameVisible,OnBecameInvisible