Speicher wird nicht freigegeben, wenn Replacescene in cocos2d-x 3.2

8

Ich entwickle Spiel in cocos2d-x 3.2 und meine App Speicher steigt mit Spielfortschritten & amp; es scheint Ressourcen Ressourcen nicht freigeben, während Szene in cocos2d-x 3.2 ersetzen, bitte helfen

    
shaqir saiyed 17.07.2015, 09:25
quelle

2 Antworten

0

Sie können

verwenden %Vor%

um diese ungenutzten Ressourcen im TextureCache, SpriteFrameCache, etc. freizugeben.

    
GaloisPlusPlus 12.11.2015 07:48
quelle
0

Ohne etwas Code zu sehen, wird es schwer sein, richtig zu antworten, aber ich werde ein oder zwei Ratespiele wagen. Hoffentlich hilft das.

Ein häufiger Fehler besteht darin, dass die ::create() -Funktionen nicht verwendet werden, die alle Node -verwandten Klassen standardmäßig haben. Die Verwendung von ::create() stellt sicher, dass ein Ref verwendet wird, was bedeutet, dass das Objekt als Referenz gezählt wird und der Speicher nach dem Ersetzen der Szene ziemlich automatisch wieder freigegeben wird. Also, wenn Sie new Scene() irgendwo in Ihrem Code verwenden (und Sie es nicht im Destruktor veröffentlichen) anstatt Scene::create() , dann haben Sie genau dort einen Speicherverlust.

Dasselbe gilt für Sprite , Node , Action , im Grunde alles. Verwenden Sie immer die zugehörige ::create() statische Funktion. Wenn Sie von einer dieser Klassen geerbt haben, können Sie ganz einfach Ihre eigene create() -Methode erstellen, indem Sie CREATE_FUNC(Player) in die Klassendefinition in der Kopfzeile einfügen. In diesem Fall ist Player der Name der von Ihnen erstellten Klasse, die eine vorhandene Klasse erweitert, wie Node oder Sprite .

    
RadicalRaid 11.10.2016 13:27
quelle