/ / Jak powstrzymać Cocos2D przed wymaganiem zasobów o standardowej rozdzielczości (obrazy SD)? - cel-c, cocos2d-iphone

Jak powstrzymać Cocos2D przed wymaganiem zasobów o standardowej rozdzielczości (obrazy SD)? - cel-c, cocos2d-iphone

Tworzę grę na iPhone'a z Cocos2d-iphone.

Chcę, aby moja gra była dostępna tylko dla iPhone'a 4 I iPada. Retina włączona dla iPhone 4. Nie chcę, aby gra działała na starszych urządzeniach.

Cocos2d zawsze pyta mnie o -hd i non-hdakta. Jeśli nie dostarczę plików SD, otrzymuję błędy. Nie chcę tego: czy istnieje sposób, aby wyłączyć Cocos2d z prób pobierania plików SD i domyślnie otrzymywać tylko pliki z sufiksem -hd?

Aha, a kiedy gra jest uruchamiana na iPadzie, grafika będzie również w wersji -hd. Chodzi o to, że w moim projekcie chcę mieć tylko pliki -hd.

Jakie są właściwe kroki, aby edytować źródło Cocos2d dla takich?

Odpowiedzi:

3 dla odpowiedzi № 1

Jeśli używasz cocos2d w wersji >= 2.0, możesz zmienić wartość zmiennej globalnej znalezionej w CCFileUtils.h:

static NSString *__suffixiPad =@"-hd";

(Jego domyślna wartość to @"-ipad".)

Jeśli używasz cocos2d w wersji < 2.0, możesz znaleźć tutaj kategoria, którą napisałem, aby móc w przejrzysty sposób korzystać z obrazów -hd stworzonych dla iPhone'a 4 na iPadzie 1/2.

Właściwie to robi więcej, ale jeśli dodaszdo twojego projektu, wtedy obrazy "-hd" będą "automagicznie" używane na iPadzie 1/2 zamiast ich wersji SD (których również nie możesz uwzględnić w swoim projekcie).

Daj mi znać, jeśli masz problemy z integracją tego kodu.


1 dla odpowiedzi nr 2

Gdybym był u ciebie.. bawiłbym się sztuczką.. Nie odrzucaj odpowiedzi, jeśli ci się nie podoba.. Ale to tylko rzecz w moim umyśle.

Użyj obrazów -hd bezpośrednio w kodzie.iPhone 4 z łatwością sobie z tym poradzi... Starsze iPhone'y pokażą go znacznie większy i nie ma to znaczenia, ponieważ ich nie obsługujesz... Więc zamiast używać Background.png , użyj bezpośrednio Background-hd.png, ponieważ będzie działać dobrze na iPhone 4.. Zamiast marnować czas na wszystkie te rzeczy SD.. Będę bezpośrednio używał moich obrazów -hd do mojej pracy...

Nie mogę powiedzieć o nowym iPadzie… Ale stary iPad może z łatwością używać obrazów -hd w kodzie, jak chcesz… W przypadku iPada wcześniej użyłem bezpośrednio w moim kodzie… Mam nadzieję że to pomoże.. :)


0 dla odpowiedzi № 3

Ten samouczek może pomóc.

Jeśli udostępniasz tylko zasoby -hd, powinieneś tylkootrzymuj błędy dotyczące brakujących zasobów SD podczas uruchamiania na iPadzie. iPad nie ma wyświetlacza Retina, ale z pewnością ma wystarczająco wysoką rozdzielczość, aby traktować go jak jeden.

Ponieważ cocos2d przekazuje wszystkie żądania nazw plików przez Funkcja fullPathFromRelativePath w CCFileUtils może wystarczyć zmodyfikowanie tej funkcji, aby traktować iPada jak urządzenie HD i zmusić go do załadowania zasobów -hd na iPada.


0 dla odpowiedzi nr 4

Pierwszym pomysłem, jaki przychodzi mi do głowy, jest użycie sufiksu @2xdla obrazów (styl UIKit) i nie będziesz musiał włączać wyświetlania siatkówki w aplikacji. Problem polega na tym, że na iPadzie będziesz musiał napisać własną metodę, aby usunąć sufiks @2x

Drugim pomysłem było zrobienie obrazu SD... ale tylko 1x1 piksela... nie zajmuje praktycznie wcale miejsca (119 bajtów z białym pikselem). Powinien działać na iPadzie bez zmian

Trzeci pomysł: nie włączaj (lub nie włączaj… nie robi żadnej różnicy) wyświetlacza siatkówki, ale miej obrazy HD jako obrazy SD. Przetestowałem to na cocos2d v1.0.1 i wydaje się, że działa. powinien działać na iPadzie

Czwarty pomysł na siłę włącz wyświetlanie siatkówki w ccConfig.h (żeby reżyser nie prosił o obrazy SD)na iPadzie) .Nie jestem pewien tego, ponieważ jest sporo testów, które sprawdzają rozdzielczość, urządzenie i czy to siatkówka i musisz je wszystkie edytować

to tylko pomysły z mojej głowy… mogą się mylić… ale to „po prostu pomysły