ToLua学习笔记,使用委托,监听UGUI组件事件
2017-06-29 17:30
381 查看
首先在Hierarchy面板创建一个Button:
我需要把这个Button对象传递到lua脚本中,以便访问,所以创建UIManager脚本如上图。内容如下:
UIManager在运行时会自动获取Button的引用,然后在LuaHelper中添加如下代码:
只是为了再lua脚本中通过LuaHelper访问到UI管理器。
然后参考宏哥的博客文章一,文章二,添加EventTriggerListener.cs:
此脚本的目的其实只是为了能像NGUI一样注册回调函数,并且这个脚本是通用的,一旦编写基本不会变化,所以方便热更新。
把之前添加过的东西都注册进去:
一旦注册进去,EventTriggerListener中的委托和事件就会被自动注册,如下所示:
编写main.lua脚本,内容如下:
清理,构建,运行Unity,用鼠标点击屏幕上的按钮,结果如下:
其实不论是LuaHelper也好UIManager也好,都只是为lua访问c#中的某些元素提供方便,这些可以自由定义,只要能满足要求。
这里我是事先就在Unity中创建好了Button,所以可以直接访问到,但实际项目中,一般都是动态创建组件,动态添加,这个时候就需要两个管理器了,一个是UIManager,管理开关,一个是ResManager管理加载做好的UI预制体,通过UIManager能自动获取到任何当前已打开的UI组件对象,这就好注册事件了。
这样,所有的操作都可以在lua脚本中进行,方便热更新。
另外有注册事件就要有移除事件,所以可以再封装一下,用来判断是否有该回调,以便移除。
请注意:LuaHelper内容我有做修改,Global是我自定义的全局管理脚本,整个ToLua框架原有代码我做了精简,大家不用非要参考我的代码,只需要用原有的框架,能够保证直接运行main.lua就可以了。
Base脚本其实就是继承自MonoBehaviour的空脚本,替换以前的View
另外LuaManager内增加了对luaState的访问
以后的文章我不在对此说明了
我需要把这个Button对象传递到lua脚本中,以便访问,所以创建UIManager脚本如上图。内容如下:
UIManager在运行时会自动获取Button的引用,然后在LuaHelper中添加如下代码:
只是为了再lua脚本中通过LuaHelper访问到UI管理器。
然后参考宏哥的博客文章一,文章二,添加EventTriggerListener.cs:
此脚本的目的其实只是为了能像NGUI一样注册回调函数,并且这个脚本是通用的,一旦编写基本不会变化,所以方便热更新。
把之前添加过的东西都注册进去:
一旦注册进去,EventTriggerListener中的委托和事件就会被自动注册,如下所示:
编写main.lua脚本,内容如下:
清理,构建,运行Unity,用鼠标点击屏幕上的按钮,结果如下:
其实不论是LuaHelper也好UIManager也好,都只是为lua访问c#中的某些元素提供方便,这些可以自由定义,只要能满足要求。
这里我是事先就在Unity中创建好了Button,所以可以直接访问到,但实际项目中,一般都是动态创建组件,动态添加,这个时候就需要两个管理器了,一个是UIManager,管理开关,一个是ResManager管理加载做好的UI预制体,通过UIManager能自动获取到任何当前已打开的UI组件对象,这就好注册事件了。
这样,所有的操作都可以在lua脚本中进行,方便热更新。
另外有注册事件就要有移除事件,所以可以再封装一下,用来判断是否有该回调,以便移除。
请注意:LuaHelper内容我有做修改,Global是我自定义的全局管理脚本,整个ToLua框架原有代码我做了精简,大家不用非要参考我的代码,只需要用原有的框架,能够保证直接运行main.lua就可以了。
Base脚本其实就是继承自MonoBehaviour的空脚本,替换以前的View
另外LuaManager内增加了对luaState的访问
以后的文章我不在对此说明了
相关文章推荐
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
- vue使用$emit时,父组件无法监听到子组件的事件
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
- Vue.js 2使用中的难点举例--子组件,slot, 动态组件,事件监听
- vue使用$emit时,父组件无法监听到子组件的事件实例
- Android列表组件ListView使用详解之滑动事件监听
- iPhone开发之UIScrollView滚动组件的使用(五) 通过代理监听滚动事件
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
- 使用vue.js在页面内组件监听scroll事件
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
- vuejs2.0实现分页组件,使用$emit进行事件监听数据传递
- vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
- Android学习笔记:超能RecyclerView组件使用(下)--实现监听事件
- 使用vue.js在页面内组件监听scroll事件的方法
- 使用委托在用户自定义控件中实现事件响应
- 使用委托在用户自定义控件中实现事件响应
- 自定义控件学习笔记(5):事件委托列表的使用
- 事件委托使用时内存泄漏的问题
- 自定义事件(自定义控件)在asp.net中委托和事件使用的基本例子
- 使用事件和委托再两个窗体之间传递数据