在cocos2D中预加载资产

时间:2011-02-01 16:20:26

标签: iphone objective-c cocos2d-iphone

我的游戏中有一些资源在加载游戏性图层时被加载。当应用程序在加载屏幕中启动时,我更愿意加载它们,这显然是一个非常标准的事情。

我的问题是在cocos2D中启动新场景的方式。考虑以下代码在整个项目的几个地方出现(有一些变化):

[[CCDirector sharedDirector] replaceScene:[CCTransitionShrinkGrow transitionWithDuration:0.5f scene:[GameplayLayer scene]]];

这是用新的场景替换当前场景的标准方法。我的问题是,鉴于该格式,我如何将预加载的资产传递给新的GameplayLayer?在cocos2D中是否有可接受的方法?我有一种感觉,我错过了一些非常简单的东西,但到目前为止,这对我来说是一个谜。

1 个答案:

答案 0 :(得分:4)

Cocos2d使用在场景之间存在的纹理缓存。您可以在加载场景中将资源预加载到此缓存中,并且它们仍然可以从您的游戏场景中获得。你如何加载它们取决于你。对于图像,您可以选择异步执行,以允许加载场景保持适当的帧速率并渲染进度条。

This post得到了基本的想法。

在这方面,这个帖子也可能对您有用:http://www.cocos2d-iphone.org/forum/topic/2242

如果你有自己的资产类(即不支持的cocos2d映像或其他东西),你可以创建自己的缓存单例类(查看如何实现各种cocos2d类的sharedManager实例)并将资源加载到那。就内存管理而言,只要您认为有必要,就必须自己发布这些资产,但这超出了这个问题的范围。