În acest tutorial, vă voi arăta cum să creați un simplu generator de nume aleatoare, pe care l-ați putea folosi pentru a da NPC-uri aleatorii o mare varietate de nume unice sau pentru a da sugestii de nume de jucători atunci când fac clic pe Nume nou buton.
Sistemul de bază este destul de simplu și poate fi construit în aproape orice limbaj de programare și mediu disponibil. O vom construi în unitate, care ar trebui să fie relativ ușor de înființat. Dacă doriți să verificați direct codul, puteți obține fișierele proiectului de la GitHub.
Gata? Haide să mergem.
Creați un nou fișier JavaScript în Unity și apelați-l nameGenerator
. Introduceți codul următor:
var actualName: String = "Alex"; funcția OnGUI () if (GUI.Button (Rect (10,10,100,50), "New Name")) CreateNewName (); GUI.Box (Rect (120,10,200,50), currentName); funcția CreateNewName ()
Apoi adăugați acest script la a gameObject
în scenă (punerea pe camera principală va face).
Aceasta creează o interfață simplă care va afișa numele care va fi creat. Dacă încercați, butonul nu va face nimic acum.
Pentru a genera un nou nume, vom crea mai întâi o listă de silabe din care numele va fi asamblat. Adăugați acest cod:
var firstNameSlabile: Array; funcția Start () firstNameSyllables = Array nou (); firstNameSyllables.Push ( "mon"); firstNameSyllables.Push ( "fay"); firstNameSyllables.Push ( "shi"); firstNameSyllables.Push ( "zag"); firstNameSyllables.Push ( "blarg"); firstNameSyllables.Push ( "rash"); firstNameSyllables.Push ( "izen");
Veți dori să adăugați mai multe pentru tine; acest lucru nu este suficient!
Pentru a alege un nume, adaptați CreateNewName ()
funcționează ca atare:
function CreateNewName () // Creeaza un prim nume cu 2-3 silabe var varName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); pentru (var i: int = 0; i < numberOfSyllablesInFirstName; i++) firstName += firstNameSyllables[Random.Range(0, firstNameSyllables.length)]; var firstNameLetter: String = ""; firstNameLetter = firstName.Substring(0,1); firstName = firstName.Remove(0,1); firstNameLetter = firstNameLetter.ToUpper(); firstName = firstNameLetter + firstName;
Acest cod va alege aleatoare din listă, de două sau de trei ori, și le va strânge împreună. Apoi va elimina prima literă, o va capitaliza și o va lipi în fața numelui.
Când apăsați butonul acum, obțineți un nume aleatoriu asamblat din listă! Puteți încerca în această construcție:
Iată câteva dintre numele generate:
Dar acest generator de nume este destul de simplu. Să ne multiplicăm rezultatele adăugând numele de familie.
Să adăugăm o nouă listă de silabe care va fi utilizată numai în numele de familie. Noul cod arată astfel:
var lastNameSillabile: Array; funcția Start () lastNameSyllables = Array nou (); lastNameSyllables.Push ( "malo"); lastNameSyllables.Push ( "zak"); lastNameSyllables.Push ( "ABO"); lastNameSyllables.Push ( "sarguincioasa");
Ca și înainte, acestea sunt doar pentru a începe. Adăugați mai multe silabe pentru ao face mai diversă!
Apoi, adaptați CreateNewName ()
funcționează astfel:
function CreateNewName () // Creeaza un prim nume cu 2-3 silabe var varName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); pentru (var i: int = 0; i < numberOfSyllablesInFirstName; i++) firstName += firstNameSyllables[Random.Range(0, firstNameSyllables.length)]; var firstNameLetter: String = ""; firstNameLetter = firstName.Substring(0,1); firstName = firstName.Remove(0,1); firstNameLetter = firstNameLetter.ToUpper(); firstName = firstNameLetter + firstName; //Creates a last name with 1-2 syllables var lastName: String = ""; var numberOfSyllablesInLastName: int = Random.Range(1, 3); for (var j: int = 0; j < numberOfSyllablesInLastName; j++) lastName += lastNameSyllables[Random.Range(0, lastNameSyllables.length)]; var lastNameLetter: String = ""; lastNameLetter = lastName.Substring(0,1); lastName = lastName.Remove(0,1); lastNameLetter = lastNameLetter.ToUpper(); lastName = lastNameLetter + lastName; //assembles the newly-created name currentName = firstName + " " + lastName;
Acum, în loc să obțineți doar un singur nume din listă, generatorul va crea un prim nume, va pune un spațiu după el și apoi va crea un nume.
Puteți încerca acest lucru în această construcție aici:
Iată câteva dintre numele generate:
Ca un detaliu final, să adăugăm un sufix, care va apărea la sfârșitul ultimului nume. Adăugați acest cod la începutul nameGenerator
script:
Numele varSuffixes: Array; funcția Start () nameSuffixes = Array nou (); nameSuffixes.Push ( "fiu"); nameSuffixes.Push ( "li"); nameSuffixes.Push ( "ssen"); nameSuffixes.Push ( "KOR");
Apoi, adăugați următoarele CreateNewName ()
, înainte ca numele să fie asamblat la sfârșit:
// adaugă un sufix numele de familie cu o șansă de 50% dacă (Random.Range (0,100) < 50) lastName += nameSuffixes[Random.Range(0, nameSuffixes.length)];
Acum există o șansă de 50% ca un nume generat să se finalizeze cu un nume tipic.
În acest tutorial, ți-am arătat codul de bază pentru a forma un generator de nume. Puteți extinde acest lucru cu variabile și caracteristici suplimentare. Încercați să adăugați:
Puteți folosi această idee și pentru alte lucruri: dați denumiri aleatoare nave spațiale sau creați descrieri aleatoare ale articolelor. Fii salbatic!