概述
DemoProject项目基于cocos2d-x3.4, 集成RainbowDesigner的Runtime代码.
你可以基于DemoProject来快速创建自己的项目.
DemoProject其实是一个精简的Lua游戏框架, UI全部用RainbowDesigner设计的VO文件.
UI布局/动画 只需要美术使用RainbowDesigner设计成VO就可以了.
RainbowDesiner设计的Lua框架,其实是一个经典的MVC框架:
i. 视图层就是VO文件
ii. 控制层就是Lua脚本Controller代码
iii. Model层就是你有游戏数据管理器
如果对Cococs2d-x比较熟悉的话, 可以很快熟练使用.
如果打开工程?
使用vs2012打开项目
DemoProject\frameworks\runtime-src\proj.win32\xiaoxiaole.sln
目录结构:
游戏入口在哪里?
如何在Vo文件中设置Controller?
VO文件中只要设置了Controller了,框架会自动调用Controller中的相关逻辑。
1. 把UI文件中的Node,自动映射到脚本中
2.自动执行脚本中的相关函数, 比如onEnter/onExit。。。等
如上图,设置了membervar, 那么可以在Lua中直接访问次变量:
self.var_map:setPosition(100, 100)
是不是很方便呢
游戏UI方面抽象出2个基本的类, Window和Dialog:
Window: 可以理解为全屏窗体,同一时刻只有一个Window可能被打开。
Window的Controller需要继承BaseController,例如:
Dialog:对话框,在Window上层弹出式对话框,会屏蔽底层点击事件。
Dialog的Controller请继承BaseDialog,例如:
如何打开一个Window?
TheGame.inst():show_window('viewobjects/Logo.vo', {})
会自动打开Logo.vo文件, 当Logo.vo文件被打开的时候,会自动加载Logo.vo文件的Controller代码。
show_window 可以带参数传递给Controller哦, 次参数会映射为Controller中的entity变量,具体看下代码吧 。
如何打开一个Dialog?
TheGame.inst():show_dialog('viewobjects/WidgetSetting.vo', {})
会自动打开WidgetSetting.vo文件, 以对话框方式打开, 并且自动加载Dialog的Controller代码。
show_dialog同样可以带参数传递给Controller。