2014-04-04 17 views
6

Jak już rozglądać się za informacje o fakturach spritekit, i natknąłem się na ten cytat:Węzły renderowania w jednym przejściu do rysowania z spritekit?

Jeśli wszystkie dzieci węzła używać tych samych tryb mieszania i tekstury atlas, następnie Sprite Kit można zazwyczaj wyciągnąć te sprites w jednym losowaniu. Z drugiej strony, jeśli dzieci są zorganizowane w taki sposób, aby tryb rysowania zmieniał się dla każdego nowego duszka, wówczas Zestaw Sprite może wykonać jako jedno przejście rysunku na duszka, co jest dość nieefektywne.

Ale to sprawdzić:

płytki z tej samej tekstury (zapewniam was, że jest to struktura, a nie tylko kolor) Untextured tiles

Płytki z własnej tekstury Textured tiles

liczba rysunków różni się o 40, mimo że wszystkie użyte tekstury pochodzą z tego samego atlasu.

Czy interpretuję słowo "atlas" jako niewłaściwe?

To gdzie przechowywać moje obrazy:

texture atlas

jest mój Przykład A „Texture atlas”, czy jest definicja „Atlas” tutaj jednym .png, który zawiera wszystkie obrazy potrzebne, a poszczególne płytki są z niego krojone?

Czy to może być problem z ładowaniem/czymś innym?

Dzięki!

Odpowiedz

5

Problem tutaj jest najprawdopodobniej spowodowany samym wykresem węzła. Załóżmy, że masz 100 duchów jako dzieci sceny, bez własnych pod-dzieci, a wszystkie używają tekstur z tego samego atlasu i domyślnych trybów mieszania, a następnie Sprite Kit będzie rysować wsadowo te 100 duszków w jednym wywołaniu.

Jednak, jeśli te kafelki mają własne znaki potomne, być może węzły kształtu lub etykiety do debugowania, to "przerwie" operację rysowania partii.

Sprawdź wykres węzłów. Upewnij się, że wszystkie spritei z płytek są dziećmi tego samego rodzica i nie mają własnych dzieci, używają tych samych trybów mieszania i tekstur z tego samego atlasu. Wtedy rysunek partii na pewno zadziała.

Jeśli to nie działa, sprawdź, czy folder tiles.atlas został poprawnie przekonwertowany na atlas tekstury w pakiecie. Jeśli otworzysz skompilowany pakiet aplikacji, powinieneś znaleźć folder o nazwie "tiles.atlasc" z plikiem plist i jednym lub kilkoma plikami png zawierającymi wszystkie poszczególne obrazy tego folderu. Ponadto żaden z tych pojedynczych obrazów nie powinien pojawić się w pakiecie - jeśli zostaną dodane do pakietu jako pojedyncze pliki o takich samych nazwach jak w atlasie, wówczas Sprite Kit domyślnie załaduje pojedyncze pliki obrazów zamiast pozyskiwać je z atlasu tekstur. .

+0

Hm, to nadal nie działa. Węzły sprite są dziećmi węzła, a nie sceny, czy to jest problem? Żadne z nich nie ma dzieci. EDYCJA: JESTEM IDIOTEM. Jeden z moich typów płytek odnosi się do obrazu w folderze obrazów ... I ten jeden kafelek go skręcał. Zdarzyło mi się, że jestem moją solidną ziemską płytką ... – IAmTheAg

+0

Um ... pomóż mi z jeszcze jedną rzeczą. Ładowanie tekstur w ten sposób wydaje się niewiarygodnie nieefektywne.Inicjowanie spriteów zajmuje mi teraz dużo więcej czasu, ponieważ mapa kafelków musi być nieustannie przeszukiwana i generowana w trakcie jej działania. Jaki jest najszybszy sposób na zainicjowanie takiego sprite'a? – IAmTheAg

+1

cóż, jeśli uruchomisz metodę ..imageNamed: dużo (zarówno dla sprite'a, jak i texture/textureatlas), które mogą potencjalnie wygenerować wiele narzutów. Dla mojej tilemap zachowam zarówno atlas w silnym ref oraz tekstury w tablicy (indeksowane przez GID) dla szybkiego dostępu. Rzuć okiem na renderer tilemap w zestawie kobold. – LearnCocos2D

Powiązane problemy