2011-02-01 66 views
1

我有一些游戏的资源正在加载游戏层时加载。我希望在应用程序在加载屏幕中启动时加载它们,这显然是非常标准的事情。在cocos2D中预加载资产

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

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

这是一个新的替换当前场景的标准方式。我的问题是,按照这种格式,我将如何将预加载的资产传递给新的GameplayLayer?在cocos2D中有这样一种可接受的方式吗?我有一种感觉,我错过了一件非常简单的事情,但到目前为止,这对我来说是个谜。

+0

你使用的是spritesheets或简单的图像? – 2011-02-01 16:30:02

+0

我使用的是spritesheets,但我最关心的资源是我自己编写的一个类(即,不能在一个场景中加载并自动在任何地方使用的类)。 – jonmorgan 2011-02-01 16:34:36

回答

4

Cocos2d使用在场景之间持续存在的纹理缓存。您可以在加载场景中将资源预加载到此缓存中,并且它们仍可从您的游戏场景中使用。你如何加载这些取决于你。对于图像,您可以选择异步执行,以使您的加载场景保持不错的帧率并呈现进度条。

This post得到了基本的想法。

这个线程也可能在这方面对你有用的:http://www.cocos2d-iphone.org/forum/topic/2242

如果你有自己的类资产(即不支持cocos2d的图像,或某事),你可以创建自己的缓存单例类(查看各种cocos2d类的sharedManager实例是如何实现的)并将资源加载到该实例中。就内存管理而言,只要你认为必要,你就必须自己释放这些资产,但这超出了这个问题的范围。