Спрайтовете трябва да бъдат почистени, преди да смените сцени със SpriteKit и Swift?

Има две сцени (scene1, scene2) в моята игра, и двете имат някои спрайтове. scene1 ще бъде представен първо със skView. scene2 ще бъде представена със същия skView, когато героят е по-силен. В случай, че героят е слаб, сцена 1 ще бъде представена отново. (Тук е точката на въпроса.) В моя случай спрайтовете, които са добавени към сцена1, се добавят към сцена1 отново(имам предвид, че са удвоени).

Направих друг тест, където представих сцената1 само два пъти една след друга. Имам същия проблем.

защо се е случило това Означава ли, че трябва да премахна всички спрайтове на сцена 1, преди да превключа на сцена 2, и да добавя отново всички спрайтове, когато се върна???

PS: въпросът е свързан с Как да превключите SKScenes в SpriteKit с Swift правилно?.

Благодаря предварително.


person Sifeng    schedule 10.10.2014    source източник
comment
Имате пропуск в кода си някъде, където или използвате повторно същата сцена, без да е била освободена, или добавяте едни и същи спрайтове два пъти по някаква причина.   -  person LearnCocos2D    schedule 10.10.2014
comment
@LearnCocos2D същите спрайтове бяха добавени два пъти, защото сцената беше представена отново. Искате да кажете, че трябва да освободя (премахна) всички спрайтове в сцената, преди да напусна сцената? Ако да, объркан съм, защо не мога просто да превключа обратно към старата сцена (която вече беше инициализирана) без добавяне/премахване на неща? (объркващо...)   -  person Sifeng    schedule 10.10.2014
comment
Не, имам предвид, че представяте новата сцена, но можете да оставите първата сцена жива, например като я присвоите на променлива на екземпляр. След това отново представяте същата сцена, вместо да създавате нова, но също така стартирате кода, който добавя отново спрайтовете, които сега ще бъдат дублирани. Така че или оставяте сцената да се освободи и създавате нова, или се уверявате, че при повторно използване на сцената не изпълнявате код, който добавя възли, които трябва да се добавят само в момента, в който сцената се инициализира.   -  person LearnCocos2D    schedule 10.10.2014
comment
@LearnCocos2D Разбирам. Трябва да проверя състоянието на инициализация в сцената, преди да добавя спрайтове (отново). Харесайте, ако !isInit {добавете спрайтове}. Благодаря ти! Спести ми много време. :›   -  person Sifeng    schedule 10.10.2014