Witam chciałbym Wam pokazać jak w prosty sposób można zrobić dialogi z NPC unity.
Najpierw stworzymy tablice ze zmiennymi.Zacznijmy od Imienia Gracza i NPCvar imieg : String;
var imien : String;
Zabieramy się za stworzenie listy tematów var tem : String;
i robimy tyle ile chcemy mieć opcji dialogowych mówionych przez naszą postać
Następnie tworzymy odpwiedzi które udziela nam NPCvar odp : String;
No to mamy już kluczowe elementy dialogu czyli głowne kwestie dialogowe.Dalej tworzymy pozycję wyświetlania odpowiedzi mówionych przez NPCvar pozycja : GUIText;
Tutaj tworzymy gameobject typu GUIText i umieszczamy go w odpowienim miejscu i usuwamy z niego w inspektorze napis.Teraz tworzymy możliwośc wyboru skinu naszego GUI czylivar skin : GUISkin;
Dalej kolejny bardzo potrzeban rzecz to pokazywanie się GUI czylivar showGUI : boolean = false;
Teraz ustawione jest ,że GUI sie nie pokaze dopuki czegoś tam nie zrobimy
Kolejna bardzo ważna zmienna to odległośc od NPC czylipublic var dist : int;
Teraz wrzucamy w skrypt samego gracza czylivar gracz : Transform;
No i kamery dialogowe i kamere którą używa gracz.var camg : Camera;
var camd : Camera;
Dalej przechodzimy do kolejnego etapu tworzymy funkcje która po kliknięciu w NPC z odpowiedniej odległości wyzwoli dialogfunction OnMouseDown(){
if(Vector3.Distance(gracz.position, transform.position) > dist) return; ///To dystans jeżeli jest większy od podaje wartości w inspektorze nie wsyswietli się GUI
showGUI = true ; ///to pokazanie naszego GUI
}
Dalej tworzymy nasze GUI function OnGUI () { //funkcja gui
if(showGUI){ // pokazanie GUI po spełnieniu warnków
Dalej tworzymy nadal w funkcji GUI zablokowanie gracza ,żeby się ruszał w dialogu oraz ustawiamy zmianę kaery na dilogową :
camg.camera.enabled = false; //wyłacza kamere gracza
camn.camera.enabled = true; //włącza kamere dialogową
gracz.transform.active = false; //i wyłącza gracz
Teraz wygląd GUI (nadal w tej samej funckji) GUI.skin = skin;// nasz skin
GUI.Box (Rect (pozycja i skala),imien ); //GUI box z imieniem NPC
GUI.Box (Rect (pozycja i skala),imieg ); //GUI Box z imieniem Gracza
if(GUI.Button(Rect(pozycja i skala),tem)) //Przycisk tematu czyli naszej kwesti dialogowej
{
pozycja.text = odp; // i odpowiedz NPC
}
Robimy tyle tematów ile chcemy i do nich odpowiedzi
I przycisk kończący rozmowe if(GUI.Button(Rect(600,540,200,20),"Koniec")) //tutaj przykładowa skala i pozycja przycisku, identycznie jest z boxami
{
pozycja.text = ""; // nie wyświetla już tekstu
gracz.transform.active = true; // uaktywnia gracza
camg.camera.enabled = true; //i jego kamere
camn.camera.enabled = false; //wyłącza kamere dialogu
showGUI = false; //oraz GUI
}
}
}
Teksty wklejamy do inspektora w odpowienie pola , i ważne żeby tekst napisać w notatniku z ustawienim wersów jakie chcemy i kopiujemy z tamtąd tekst i wklejamy do inspektora.
A tak to wygląda w działaniu :
https://www.youtube.com/watch?v=O3FDuosmjoE
Jeżeli jakieś pytania proszę smiało pisać .