《ULUA的简洁用法(二)》
作者: 游蓝海
文章链接:http://blog.csdn.net/you_lan_hai/article/details/70554237
转载请注明出处
写上一篇文章《ULUA简洁用法》的时候,我对ULUA的认识还不是很深,经过一段时间的摸索后,我又整理了另一种更简单的方式,不需要修改ULUA源码,一个代码文件就能容纳下所有需要的内容。
1.原理
给GameObject添加上一个C#脚本组件作为中间层,在中间层上绑定上一个LUA脚本,将Unity的所有回调接口通过中间层传递到LUA。同时,LUA脚本也可以通过中间层操作GameObject。
2.实现中间层LuaBehaviour
中间层从MonoBehaviour
派生
添加public变量ScriptName
,用于在编辑器属性界面中输入Lua的模块名。当中间层Awake
的时候,根据ScriptName
加载Lua文件,并实例化出Lua类对象。
实例化LuaClient
LuaClient
在整个工程中应当只存在一个实例对象,我们可以把他绑定到一个不随关卡销毁的GameObject
对象上(调用了DontDestroyOnLoad
的GameObject
)。我们可以把实例化步骤也放到中间层脚本上,如此一来,只要场景中挂载了中间层脚本,LuaClient
也就会被自动初始化。
调用成员方法
对于只调用一次的Lua层方法,我们没必要在C#端去记录这个成员变量,比如Lua层面的Awake
和Start
方法。为了方便使用,我们在需要自动将self
作为第一个参数,传递给Lua方法。
object[] CallMethod(string func, params object[] args)
中间层关键代码
using UnityEngine;
using System;
using System.Collections;
using LuaInterface;
public class LuaBehaviour : MonoBehaviour
{
public string