Podczas korzystania z edytora scen programu SpriteKit napotkałem pewne nieoczekiwane zachowanie i zastanawiam się, czy ktoś inny ma ten sam problem.Xcode 9.1 (i 9.2) - Nie działają sekwencje przywoływanych odnośników Akcje dodane w edytorze scen
Utworzyłem duszka w scenie i dodałem Akcje, aby przenieść je za pomocą Edytora sceny. Akcje grają dobrze, gdy klikam przycisk animacji na edytorze. Dodaję odniesienie do tej sceny do głównej sceny za pomocą obiektu SKReferenceNode w edytorze scen, a ikonka pojawia się w głównej scenie zgodnie z oczekiwaniami w edytorze. Jednak po zbudowaniu i uruchomieniu aplikacji pojawia się ikonka, ale nie działają żadne akcje. Próbowałem tego na Xcode 9.2 beta i uzyskać ten sam wynik. Jeśli załaduję scenę Sprite bezpośrednio z głównego kontrolera widoku, wszystkie Akcje wykonują się zgodnie z oczekiwaniami, więc wydaje się, że problem dotyczy węzłów z odniesieniami. Odkryłem też, że jeśli przesłonię didMove (do :) w głównej scenie klasy swift i wstawię w nim punkt przerwania, to po prostu uderz dalej, gdy dotrze do punktu przerwania, wszystkie akcje będą odtwarzane na przywołanych duszkach zgodnie z oczekiwaniami. Jeśli wyłączę punkt przerwania, nie będą odtwarzane akcje na przywołanych ikonach. (Tak więc moim rozwiązaniem jest użycie punktu przerwania i naciśnięcie przycisku kontynuacji)
Inna interesująca obserwacja. Otworzyłem przykładowy projekt utworzony ze starszej wersji Xcode, a przywołane spritey wykonały swoje Akcje dobrze. Skopiowałem ten starszy plik SKS do mojego projektu, a Actions działało bez zarzutu ... dopóki nie edytowałem pliku SKS (dodano kolejną akcję), a potem już nigdy nie pracowały.
Istnieje błąd, w którym parametr isPaused jest ustawiony na wartość true na początku, gdy scena przenosi się do widoku, wywołaj scene.isPaused = false, aby zresetować wszystkie węzły. – Knight0fDragon
To się udało, dziękuję. Co zabawne, po przeprowadzeniu eksperymentów z ustawieniem jest zatrzymany na wielu węzłach SKReferenceNode, jak również na Scenie przywoływanej, aby go uruchomić, po uruchomieniu Iteratorycznie usunąłem je wszystkie, a teraz działa bez żadnych modyfikacji ... dziwne. – Roger
nie musisz iterować, scene.isPaused wykonuje iterację dla ciebie (Straszny projekt z ich strony) – Knight0fDragon