您的位置:首页 > 编程语言 > Lua

项目后期Lua接入笔记03--LuaBehaviour设计

2017-03-27 20:37 501 查看
Unity是组件式开发,脚本继承自monobehaviour,然后挂在在gameobject上来驱动游戏,沿着这条思路,我们设计一个自己的behaviour来驱动lua脚本。

using UnityEngine;
using LuaInterface;

public class LuaMono : MonoBehaviour
{
public string ModualName;

public LuaTable Table { get; private set; }

private LuaFunction m_awakeFunc;
private LuaFunction m_startFunc;
private LuaFunction m_enableFunc;
private LuaFunction m_disableFunc;
private LuaFunction m_destroyFunc;
private LuaFunction m_clickFunc;

private void Awake()
{
if (Table == null)
{
object[] objs = LuaManager.Instance.DoFile(ModualName);
Table = objs[0] as LuaTable;
if (Table == null)
{
Debug.LogError("cant find lua table");
}
}

GetFunction();

if (m_awakeFunc != null)
{
m_awakeFunc.Call(gameObject);
}
}

protected virtual void GetFunction()
{
m_awakeFunc = Table.GetLuaFunction("Awake");
m_startFunc = Table.GetLuaFunction("Start");
m_enableFunc = Table.GetLuaFunction("OnEnable");
m_disableFunc = Table.GetLuaFunction("OnDisable");
m_destroyFunc = Table.GetLuaFunction("OnDestroy");
m_clickFunc = Table.GetLuaFunction("OnClick");
}

private void Start()
{
if (m_startFunc != null)
{
m_startFunc.Call();
}
}

private void OnEnable()
{
if (m_enableFunc != null)
{
m_enableFunc.Call();
}
}

private void OnDisable()
{
if (m_disableFunc != null)
{
m_disableFunc.Call();
}
}

private void OnClick()
{
if (m_clickFunc != null)
{
m_clickFunc.Call();
}
}

private void OnDestroy()
{
if (m_destroyFunc != null)
{
m_destroyFunc.Call();
}
}

private void Reset()
{
ModualName = gameObject.name;
}

}


我们在一开始的时候获取luaTable,所有lua脚本的最后我们要把luaTable return出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity lua 项目 后期