Sfat rapid Cum să codificați un generator de caractere simplu

Î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.


Configurați interfața

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.


Creați primul nume

Adăugați câteva silabe

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!

Puneți împreună numele întâi

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:

  • Zagmonshi
  • Izenzag
  • Shifay
  • Rashblarg

Dar acest generator de nume este destul de simplu. Să ne multiplicăm rezultatele adăugând numele de familie.


Creați numele de familie

Adăugați câteva silabe

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ă!

Punându-le pe toți împreună

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:

  • Blargshiizen Maloabokor
  • Zagblarg Maloson
  • Rashzag Wonkli
  • Shifay Abomalo

Adăugați un Suffix la sfârșitul numelui

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.


Concluzie

Î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:

  • Nume de mijloc
  • Mai multe sufixe de nume (III, OBE și așa mai departe)
  • Prefixe (domnule, doamnă, conte și altele)
  • Alte adăugări ("Glagnarr the Destructor")

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!


Referințe

  • Image credit: Identificarea de către Rémy Médard din Proiectul Noun