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
Sie können
verwenden %Vor%um diese ungenutzten Ressourcen im TextureCache, SpriteFrameCache, etc. freizugeben.
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
.
Tags und Links memory-management cocos2d-x-3.0