Cocos2d-x CocosBase 场景管理解决方案
CocosBase是基于Cocos2d-x移动跨平台游戏引擎的一套场景管理、消息管理、事件管理等开源解决方案
CocosBase的出现,完全改善了引擎场景管理上的不足与缺陷,与引擎本身也是完美结合。对于本身需求有二次封装的团队是一种标准解决方案。CocosBase改善了引擎场景切换的方式与定义,使之更方便简洁,拓展性更强。增加了消息广播机制,触摸事件优先级管理机制,接下来Viva将逐步介绍。
场景管理改善:
与引擎本身不同的是,CocosBase拓展了NotificationNode接口,使游戏本身由1个渲染树(Scene渲染树)变为2个渲染树:
基础场景渲染树(Scene渲染树)
悬浮场景渲染树(NotificationNode渲染树)
分为两条渲染树的理由:
在一般的rpg游戏里,大可抽象场景为游戏场景与UI场景,
游戏场景富含了所有游戏的内容玩家、npc、怪物等等。
UI场景则可以理解为背包系统、强化系统、好友系统等等。
为了把两种场景类型抽象出来分别处理,则出现了上文所说的两条渲染分支。
悬浮场景将永远呈现在基础场景之上,悬浮场景的切换不会影响基础场景,基础场景的切换也同样不会影响悬浮场景
如果2条渲染树让大神您觉得很不爽,那您完全可以只用一条渲染树(相当于引擎本身的方式)
管理基础场景渲染树的接口:
public: // 运行场景 void runWithScene(CCScene* pScene); // 替换栈顶场景 void replaceScene(CCScene* pScene); // 场景入栈 void pushScene(CCScene* pScene); // 场景出栈 void popScene(); // 连续出栈到栈底 void popToRootScene(); // 连续出栈到指定等级 等级为零将退出游戏 void popToSceneStackLevel(int nLevel);
管理悬浮场景渲染树的接口:
public: // 替换栈顶悬浮场景 void replacePopupScene(CCScene* pScene); // 悬浮场景入栈 void pushPopupScene(CCScene* pScene); // 悬浮场景出栈 void popPopupScene(); // 连续出栈到栈底 void popToRootPopupScene(); // 连续出栈到指定等级 等级为零将关闭所有悬浮场景 void popToPopupSceneStackLevel(int nLevel);
关于引擎提供的场景的切换动画(CCTransitionScene) 目前只有基础场景支持切换动画,如果大神您非要悬浮场景也支持,那Viva给您提供一个方案去实现,可以在悬浮场景的onEnter与onEnterTransitionDidFinish这两个回调函数里去做些事情。
场景扩展类介绍
目前在2dx2.0版本里扩展场景类名:CCSceneEx
基础场景与悬浮场景的定义,都需要从CCSceneEx继承而来。
CCSceneEx API:
onLoadResources()
当场景被初次创建时 在此方法内部初始化场景所需要的资源
目前支持图片的加载
同步方式:addImage()
异步方式:addImageAsync()
当所有资源成功加载后 会调用onLoadResourcesCompleted
仅初始化时回调一次
onLoadResourcesCompleted()
当场景内的资源被成功加载后 回调此方法
同步加载后立即回调 如果存在异步方式
则异步加载完成后回调
仅初始化时回调一次
onLoadScene()
场景资源加载完成后会调用此接口 用于
初始化场景内所有元素
仅初始化时回调一次
isCachable()
覆盖此函数来指定本场景是否缓存
getExtraObject()
相关新闻>>
- 发表评论
-
- 最新评论 更多>>