我的游戏中有一些资源在加载游戏性图层时被加载。当应用程序在加载屏幕中启动时,我更愿意加载它们,这显然是一个非常标准的事情。
我的问题是在cocos2D中启动新场景的方式。考虑以下代码在整个项目的几个地方出现(有一些变化):
[[CCDirector sharedDirector] replaceScene:[CCTransitionShrinkGrow transitionWithDuration:0.5f scene:[GameplayLayer scene]]];
这是用新的场景替换当前场景的标准方法。我的问题是,鉴于该格式,我如何将预加载的资产传递给新的GameplayLayer
?在cocos2D中是否有可接受的方法?我有一种感觉,我错过了一些非常简单的东西,但到目前为止,这对我来说是一个谜。
答案 0 :(得分:4)
Cocos2d使用在场景之间存在的纹理缓存。您可以在加载场景中将资源预加载到此缓存中,并且它们仍然可以从您的游戏场景中获得。你如何加载它们取决于你。对于图像,您可以选择异步执行,以允许加载场景保持适当的帧速率并渲染进度条。
This post得到了基本的想法。
在这方面,这个帖子也可能对您有用:http://www.cocos2d-iphone.org/forum/topic/2242
如果你有自己的资产类(即不支持的cocos2d映像或其他东西),你可以创建自己的缓存单例类(查看如何实现各种cocos2d类的sharedManager实例)并将资源加载到那。就内存管理而言,只要您认为有必要,就必须自己发布这些资产,但这超出了这个问题的范围。