2011-02-01 64 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實例是如何實現的)並將資源加載到該實例中。就內存管理而言,只要你認爲必要,你就必須自己釋放這些資產,但這超出了這個問題的範圍。