项目后期Lua接入笔记03--LuaBehaviour设计
2017-03-27 20:37
501 查看
Unity是组件式开发,脚本继承自monobehaviour,然后挂在在gameobject上来驱动游戏,沿着这条思路,我们设计一个自己的behaviour来驱动lua脚本。
我们在一开始的时候获取luaTable,所有lua脚本的最后我们要把luaTable return出来。
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出来。
相关文章推荐
- 项目后期Lua接入笔记08--Lua面向对象及LuaBehaviour的再设计
- 项目后期Lua接入笔记05--网络协议protobuf在lua中的使用pbc
- 项目后期Lua接入笔记10--Lua代码优化1
- 项目后期Lua接入笔记06--按钮事件监听及消息分发
- 项目后期Lua接入笔记02--框架剥离
- 项目后期Lua接入笔记09--策划Excel转Lua
- 项目后期Lua接入笔记11--Lua代码优化2
- 项目后期Lua接入笔记04--宏定义处理HelloWorld
- 项目后期Lua接入笔记07--预制属性转lua代码
- 项目后期Lua接入笔记01--框架及IDE
- HTML5项目笔记10:使用HTML5 IndexDB设计离线数据库
- 黑马程序员之项目开发学习笔记:ATM取款机系统数据库设计
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_01_绘制坐标轴_修订ParamsForm
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_03_设置窗体弹出退出顺序
- HTML5项目笔记2:离线系统表单设计
- asp.net mvc 3.0详细笔记__03__项目文件结构详解_Controllers
- HTML5项目笔记5:使用HTML5 WebDataBase设计离线数据库
- HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_03_绘制雷点
- jQuery moible 开发笔记之项目设计