Unity3d QuickTip – czyli szybkie porady, rozwiązania częstych problemów i sztuczki w Unity3d!

Dzisiejszy odcinek: Jak stworzyć własny ekran startowy

Uwaga! Jest to poradnik typu QuickTip. Zatem skupia się on na osiągnięciu założonego celu. Zatem zakładamy że użytkownik zna na tyle program Unity3d, aby samodzielnie wykonać najprostsze czynności, jak np. dodanie modelu kostki do sceny czy dodanie modelowi jakiegoś komponentu. Jeżeli brakuje Ci tej podstawowej wiedzy, zapraszam do tutoriala:
Unity Tutorial – Podstawy

Teoria

Ekran startowy, czyli z angielskiego Splash screen, to ta sekwencja animacji lub obrazków, pojawiających się gdy uruchamiamy grę. Najczęściej pojawiają się tam loga wszystkich narzędzi i ekip zaangażowanych w produkcję gry. Dziś sobie wymyślimy jak to zrobić.

Usunięcie loga Unity

O to pyta masa osób. Czy jest metoda, aby usunąć animację Unity przy starcie gry.

Dodatkowa Wiedza
You will not delete or in any manner alter any Unity or third-party copyright, trademark or other proprietary rights notices or markings appearing on or in the Software (including the runtime portion thereof).

Cytat z licencji Unity. Oficjalnie? Legalnie nie da się tego zrobić. Stworzyłeś grę w Unity ich logo musi się tam znaleźć. Jednak, w wersji Pro Unity, można dokonać modyfikacji ekranu startowego.

Aby to zrobić, wystarczy wejść w [Edit -> Project Settings -> Player], a tam w sekcji Splash Screen dodać swój obrazek. (W wersji darmowej, również można to zrobić, ale nie będzie efektu).

Zmiana SplashScreena w Unity3d
Zmiana SplashScreena w Unity3d

Własny ekran startowy

Załóżmy, że nie przeszkadza nam ekran Unity, ale chcemy po nim dołożyć jakiś nasz obrazek. Tworzymy w tym celu nowy pusty GameObject (u mnie SplashHolder) [GameObject -> Create Empty].

Następnie jako jego child, tworzymy sobie canvasa wraz z obiektem obrazka [GameObject -> UI -> Image]. Powinniśmy uzyskać taką hierarchię obiektów:

Hierarchia obiektów
Hierarchia obiektów

Przygotowujemy sobie dodatkowo obrazek, który będzie naszym splashScreenem. Ja mam coś takiego:

Mój Splash Screen
Mój Splash Screen

Po wrzuceniu tego obrazka do Unity, musimy zmienić jego typ na Sprite.

Zmieniamy tryb obrazka na Sprite
Zmieniamy tryb obrazka na Sprite

Wystarczy w okienku project zaznaczyć nasz obrazek i z poziomu inspectora ustawić Texture Type na Sprite.

Teraz czas dokonać kilku modyfikacji w Canvasie.

Ustawiamy Canvas
Ustawiamy Canvas

Zaznaczamy obiekt Canvas i swój wzrok kierujemy na panel Inspector. Tutaj znajdujemy komponent Canvas i dokonujemy zmian:

  • Opcję Render Mode zmieniamy na Screen Space – Camera – czyli canvas wyświetli się bezpośrednio w kamerze.
  • Ustawiamy opcję Pixel Perfect – zapewnia nam to większą ostrość obrazka
  • W polu Render Camera wybieramy kamerę główną.
  • Oreder in Layer ustawiamy na 1, aby obrazek był na samej górze.

Zostało zmodyfikować ustawienia obiektu Image

Obiekt Image
Obiekt Image

Jako Source Image ustawiamy nasz obrazek. Następnie zmieniamy Image Type na Filled. W Rect transform ustawiamy opcję jak na obrazku. Powinno nam to zapewnić, że obrazek rozciągnie się na cały ekran.

Teraz tworzymy prosty skrypt (Splash.cs), który dodajemy do obiektu SplashHolder. Sam skrypt ma bardzo prostą składnie:

Odczekujemy 2 sekundy i usuwamy nasz SplashHolder, czyli znikamy obrazek. Jeżeli ktoś ma ochotę, może się tutaj pobawić z Animatorem i sprawić, żeby obrazek powoli znikał (Fade Out).

  • Marek Jaglarz

    Interesowałoby mnie jak usunąć okienko z wyborem rozdzielczości bezpośrednio po uruchomieniu pliku exe. Chyba że mozna to usunąć tylko w wersji Pro? ;-)

    • Bardzo prosto. Wchodzisz sobie w: Edit -> Project Settings -> Player Settings
      W inspektorze wybierasz sobie taką strzałkę w dół (build pod PC/Linux/Mac). Tam rozwijasz panel Resolution and Presentation. W nim znajdujesz opcję Display Resolution Dialog i wybierasz Hidden By Default, ewentualnie Disabled.

    • Marek Jaglarz

      No faktycznie, ale ślepiec ze mnie ;-) Dzięki za poradę. Jednocześnie chciałbym zaprotestować że strasznie rzadko piszesz… ;-)

  • Jakub Kwiatkowski

    Przedstawiłeś tu opcję z nieruchomym splash screenem, a jak stworzyć taki splash screen z animacji, tzn. mam filmik(wyrenderowaną animację) i chciałbym ją ustawić jako splash screen?

    • W Unity masz coś takiego jak MovieTexture. Tekstura, na którą nakłada się film. Więc wystarczy stworzyć np. plane’a przodem do kamery na którego sobie taką teksturę z odpowiednim filmem nałożysz. Niestety, bajer działa tylko w wersji pro.

      Da się to obejść: Np. wyrenderować sobie każdą klatkę filmu jako oddzielną teksturę i potem z poziomu kodu zmieniać tekstury, efektem będzie odegrany film.

      Reszta zostaje bez zmian.

      Link do dokumentacji MovieTexture: http://docs.unity3d.com/Manual/class-MovieTexture.html

    • Jakub Kwiatkowski

      MovieTexture działa też w wersji darmowej Unity 5. I wiem, że można zrobić to z planem. Myślałem tylko, że jest jakiś bardziej elegancki sposób zrobienia tego właśnie z użyciem GUI. Ale jak się nie ma co się lubi, to się lubi co się ma :) Dzięki za odpowiedź :)

  • XPozion Szykota

    Witam. zrobilem tak jak jest napisane usunolem i nic nie mam >..< w czym problem jest ? prosze o szybka pomoc

    • Tzn.? Możesz dokładniej opisać co się dzieje, bo z tego opisu nie wiele rozumiem.