În acest tutorial vă voi arăta cum să creați un simplu meniu de personalizare a personajelor și cum să salvați datele necesare pentru a fi utilizate într-un joc. Vom crea un avatar jucător (un avion în acest exemplu), personalizați-l adăugând atașamente opționale sau schimbând culoarea, salvând datele, încărcând un alt nivel și recreându-l din datele salvate. Acest lucru vă permite în mod efectiv să îl personalizați în afara lumii jocului; într-un sistem de meniuri, astfel încât să fie disponibil oriunde doriți, chiar și după renunțarea la joc și repornirea jocului.
postări asemănatoareVeți avea nevoie de o înțelegere de bază a Unității pentru asta. Dacă doriți să modelați propriile obiecte, puteți face acest lucru, dar modelul 3d utilizat în acest tutorial este, de asemenea, disponibil pentru descărcare aici. Întregul proiect, în cazul în care doriți să căutați ceva, poate fi descărcat și aici.
Creați un nou proiect Unity. Vom avea nevoie de 2 nivele acolo, pentru a putea trece între ele. Salvați scena curentă și denumiți-o "levelMenu". Apoi deschideți setările de configurare (setări de configurare a fișierelor) și apăsați "adăugați scena curentă". Acest lucru este necesar pentru ca noi să îl putem accesa mai târziu și să-l încărcăm direct.
Apoi creați o nouă scenă și denumiți-o "levelGame" și adăugați-o și la setările de construire. Acum ar trebui să fie prezente scenele de bază, permițându-ne să le umplem de lucruri.
Vom folosi un avion ca "caracter" pentru moment (acest lucru este mult mai ușor de manevrat decât un full-on umane). Obțineți activele 3d (aici sunt din nou) și copiați-le în dosarul dvs. de materiale. Creați un cub și schimbați ochiurile de plasă. Creați un material nou și adăugați-l în avion. În cele din urmă, trageți avionul în directorul de proiect pentru a face un prefabricat din acesta.
Pentru a personaliza avionul, vom avea nevoie de un fel de interfață.
Creați un script nou și denumiți-l plan.js. Introduceți codul următor
funcția OnGUI () if (Application.loadedLevel == 0) if (GUI.Button (Rect (10, 10, 100, 50), "Red")) renderer.material.color = dacă (GUI.Button (Rect (10, 70, 100, 50), "Albastru")) renderer.material.color = Color.blue; dacă (GUI.Button (Rect (10, 130, 100, 50), "Verde")) renderer.material.color = Color.green;
Adăugați scriptul la planul prefabricat și plasați un avion în scenă. Mutați camera astfel încât să se uite la avion, astfel încât să putem vedea schimbările pe care le vom face. Când îl executați, ar trebui să arate astfel:
Dacă apăsați un buton, culoarea planului ar trebui să se schimbe. Puteți încerca acest lucru în acest build: DOWNLOAD SOURCE PROJECT 1.
Dacă (Application.loadedLevel == 0) -bracket dezactivează butonul dacă este încărcat un alt nivel, cu excepția meniului (nivelul 0). Acest lucru este util pentru gestionarea sistemelor gui.
În "levelGame", puneți un alt avion și faceți camera să se uite la ea. Dacă încercați acest lucru, nu trebuie să se întâmple nimic încă, deoarece încă nu am adăugat adaptarea datelor salvate. În timp ce sunteți acolo, faceți scena diferită de scorul "levelMenu", astfel încât să fie mai ușor să spuneți ambele părți. Acordarea unei culori diferite de fundal în Camera principală ar trebui să fie suficientă.
Acum du-te înapoi la nivelul "levelMenu", totul se va face de acolo. Deschideți schema plană și adăugați următoarele linii, sub codul butoanelor:
funcția OnGUI () if (GUI.Button (Rect (120, 10, 100, 50), "Load Level")) Application.LoadLevel (1);
Încearcă! Ar trebui să apară un nou buton și dacă îl apăsați, acesta va încărca noul nivel. Avionul din celălalt nivel va avea aspectul "de bază" deși. Următorul pas va fi să-l adaptați odată ce nivelul a fost încărcat.
Unitatea vine cu funcțiile "PlayerPrefs". Acestea permit salvarea și încărcarea datelor pe orice dispozitiv utilizat. Mai întâi vom salva culoarea planului și apoi vom vedea despre re-crearea acestuia la al doilea nivel încărcat.
Adaptați butonul pentru nivelul de încărcare pentru a arăta astfel:
dacă (GUI.Button (Rect (120, 10, 100, 50), "Nivel de încărcare")) PlayerPrefs.SetFloat ("planeColorR", renderer.material.color.r); PlayerPrefs.SetFloat ("planColorG", ranerer.material.color.g); PlayerPrefs.SetFloat ("planeColorB", ranerer.material.color.b); Application.LoadLevel (1);
Când faceți clic pe butonul "nivel de încărcare", jocul va salva acum componentele roșii, verzi și albastre ale culorilor ca trei valori separate. Roșul va fi salvat ca "planeColorR", verde va fi salvat ca "planeColorG", iar albastrul este salvat ca "planeColorB". Aceste valori sunt salvate în afara jocului de pe computer (sau orice dispozitiv pe care acesta se va difuza, cum ar fi un dispozitiv iOS, Android sau Ouya) și poate fi recuperat în orice moment în orice moment.
Nu adăugați acest cod în script:
funcția Start () renderer.material.color.r = PlayerPrefs.GetFloat ("planeColorR"); renderer.material.color.g = PlayerPrefs.GetFloat ("planeColorG"); renderer.material.color.b = PlayerPrefs.GetFloat ("planColorB");
Când nivelul este început, avionul va obține datele de culoare salvate și va aplica planul. Dacă încercați acum, și pare negru, asta pentru că nu a fost încă salvat date! Pentru a preveni acest lucru, îl puteți seta să se adapteze numai la al doilea nivel:
dacă (Application.loadedLevel == 1) PlayerPrefs.SetFloat ("planeColorR", renderer.material.color.r); PlayerPrefs.SetFloat ("planColorG", ranerer.material.color.g); PlayerPrefs.SetFloat ("planeColorB", ranerer.material.color.b);
Să facem alte lucruri pentru a personaliza avionul! În fișierele 3d veți găsi și câteva bombe. Vom reuși astfel încât aceștia să poată fi puse sub avion și să fie și economisiți.
Începeți prin a crea un obiect bombă. Faceți un cub și schimbați ochiurile pentru plasa de bombe. Adăugați o culoare gri și apoi părăsiți racheta în avion și centrați-o sub ea. Ar trebui să arate astfel:
Dacă apăsați "aplicați" în timp ce avionul se află în inspector, noile bombe vor fi adăugate în prefabricat, iar avionul din nivelul "levelGame" va fi actualizat automat și.
Acum adaugati aceste linii la script:
var bombe: GameObject; funcția Start () bombs.SetActive (false); dacă (PlayerPrefs.GetInt ("bombe") == 1) bombe.SetActive (adevărat); funcția OnGUI () if (GUI.Button (Rect (10, 190, 100, 50), "Bombs")) bombs.SetActive (! Funcția LoadLevel () if (bombs.ActiveSelf ()) PlayerPrefs.SetInt ("planeBombs", 1); Altceva PlayerPrefs.SetInt ("planeBombs", 0);
Înainte de al încerca, amintiți-vă că trageți obiectul "bomba" în scenă în bombe în avion, altfel nu va funcționa.
Întreg scenariul ar trebui să arate astfel:
#pragma strict var bombe: GameObject; funcția Start () if (Application.loadedLevel == 1) renderer.material.color.r = PlayerPrefs.GetFloat ("planeColorR"); renderer.material.color.g = PlayerPrefs.GetFloat ("planeColorG"); renderer.material.color.b = PlayerPrefs.GetFloat ("planColorB"); Bombe.SetActive (false); dacă (PlayerPrefs.GetInt ("planeBombs") == 1) bombe.SetActive (adevărat); Funcția OnGUI () if (Application.loadedLevel == 0) if (GUI.Button (Rect (10, 10, 100, 50), Red)) renderer.material.color = Color.red; Dacă (GUI.Button (Rect (10, 70, 100, 50), "Albastru")) renderer.material.color = Color.blue; Dacă (GUI.Button (Rect (10, 130, 100, 50), "Verde")) renderer.material.color = Color.green; Dacă (GUI.Button (Rect (10, 190, 100, 50), "Bombs")) bombs.SetActive (! Bombs.activeSelf); Dacă (GUI.Button (Rect (120, 10, 100, 50), "Nivel de încărcare")) PlayerPrefs.SetFloat ("planeColorR", renderer.material.color.r); PlayerPrefs.SetFloat ("planColorG", ranerer.material.color.g); PlayerPrefs.SetFloat ("planeColorB", ranerer.material.color.b); dacă (bombs.activeSelf) PlayerPrefs.SetInt ("planeBombs", 1); Altceva PlayerPrefs.SetInt ("planeBombs", 0); Application.LoadLevel (1); Altceva if (GUI.Button (Rect (10, 10, 100, 50), "Load Menu")) Application.LoadLevel (0);
Când apăsați butonul "nivel de încărcare" acum, starea bombei este salvată. La pornirea noului nivel, bombele sunt apoi dezactivate sau activate, în funcție de starea salvată. Puteți încerca acest lucru în acest build: DOWNLOAD SOURCE PROJECT 2.
Au fost efectuate! Acum știți cum să
Acest personalizat personaj "caracter" va fi disponibil în orice moment în timpul jocului.
Am folosit doar un simplu avion ca exemplul nostru "caracter", dar poate fi orice. Barci, mașină, oameni, animale, chiar simple lucruri, cum ar fi cuburile sau sferele, ar putea fi folosite pentru a reprezenta jucătorii dvs. în jocurile dvs. Acest lucru poate fi folosit și pentru a personaliza alte elemente, cum ar fi armele, vehiculele, obiceiurile, stilurile de păr sau chiar decaralele într-o vastă locuință persistentă. Fii salbatic!