2017-12-03 126 views
5

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.

+1

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

+0

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

+0

nie musisz iterować, scene.isPaused wykonuje iterację dla ciebie (Straszny projekt z ich strony) – Knight0fDragon

Odpowiedz

0

zadałem podobne pytanie tylko na drugi dzień: XCode 9: SKEditorReference doesn't allow animations?

Jedynym sposobem udało mi się uzyskać to do pracy było umieścić isPaused na dokładnym węzła ikonki starałem się animować (w odn node - Stworzyłem całą scenę/plik sks i przeciągnąłem to na moją główną scenę).

Próbowałem isPaused = false na najwyższym poziomie, główna scena didMove, aby wyświetlić bez efektu, a następnie dodała isPaused = false do głównego węzła odniesienia, bez efektu. To działało tylko wtedy, gdy dodałem isPaused = false, rzeczywisty sprite, który próbowałem animować. Usunąłem isPaused = false z głównych węzłów ref. & i tak długo, jak było to jeszcze w węźle ikonek (w węźle ref), próbowałem animować: sukces.

Dolna linia wydaje się być taka, że ​​isPaused = false jest wymagana dla wszystkich duszków w węźle odniesienia.