Rask Tips Slik kodes du en enkel tegnnavngenerator

I denne veiledningen vil jeg vise deg hvordan du lager en enkel tilfeldig navnegenerator, som du kan bruke til å gi tilfeldige NPCer et stort utvalg av unike navn eller gi et navn til spilleren når de klikker på en Nytt navn knapp.

Det grunnleggende systemet er ganske enkelt, og kan bygges i stort sett hvilket som helst programmeringsspråk og miljø som er tilgjengelig. Vi skal bygge den i Unity, som skal være relativt enkelt å sette opp. Hvis du vil sjekke koden direkte, kan du få prosjektfilene fra GitHub.

Klar? La oss komme igang.


Sett opp grensesnittet

Opprett en ny JavaScript-fil i Unity og ring den nameGenerator. Sett inn følgende kode i den:

 var currentName: String = "Alex"; funksjon OnGUI () if (GUI.Button (Rect (10,10,100,50), "Nytt navn")) CreateNewName ();  GUI.Box (Rect (120,10,200,50), nåværende navn);  funksjon CreateNewName () 

Legg deretter til dette skriptet til en gameObject i scenen (å sette inn på hovedkameraet vil gjøre).

Dette skaper et enkelt grensesnitt som vil vise navnet som skal opprettes. Hvis du prøver det, vil knappen ikke gjøre noe akkurat nå, skjønt.


Opprett fornavnet

Legg til noen Syllables

For å generere et nytt fornavn, oppretter vi først en liste over stavelser som navnet vil bli samlet sammen med. Legg til denne koden:

 var firstNameSyllables: Array; funksjon Start () firstNameSyllables = new Array (); firstNameSyllables.Push ( "man"); firstNameSyllables.Push ( "fay"); firstNameSyllables.Push ( "shi"); firstNameSyllables.Push ( "sakk"); firstNameSyllables.Push ( "blarg"); firstNameSyllables.Push ( "utslett"); firstNameSyllables.Push ( "IZEN"); 

Du vil legge til litt mer selv; dette er langt ikke nok!

Sett fornavnet sammen

For å faktisk velge et navn, tilpasse CreateNewName () fungere som slik:

 funksjon CreateNewName () // Oppretter et fornavn med 2-3 stavelser var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); for (var jeg: 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; 

Denne koden vil tilfeldigvis velge stavelser fra listen, to eller tre ganger, og streng dem sammen. Da vil det fjerne det første bokstaven, kapitalisere det og holde det tilbake foran navnet.

Når du trykker på knappen nå, får du et tilfeldig sammensatt navn fra listen! Du kan prøve det ut i denne bygningen:

Her er noen av de genererte navnene:

  • Zagmonshi
  • Izenzag
  • Shifay
  • Rashblarg

Men dette navnet generator er ganske enkelt. La oss multiplisere resultatene våre ved å legge til etternavn.


Opprett etternavnet

Legg til noen Syllables

La oss legge til en ny liste over stavelser som bare blir brukt i etternavnet. Den nye koden ser slik ut:

 var lastNameSyllables: Array; funksjon Start () lastNameSyllables = new Array (); lastNameSyllables.Push ( "malo"); lastNameSyllables.Push ( "zak"); lastNameSyllables.Push ( "abo"); lastNameSyllables.Push ( "wonk"); 

Som før, er disse bare for å komme i gang. Legg til flere stavelser for å gjøre det mer variert!

Sette alt sammen

Deretter tilpasser du CreateNewName () fungere på denne måten:

 funksjon CreateNewName () // Oppretter et fornavn med 2-3 stavelser var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); for (var jeg: 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; 

Nå, i stedet for å bare få et navn fra listen, genererer generatoren et fornavn, legger et mellomrom etter det, og deretter oppretter et etternavn.

Du kan prøve det ut i denne bygningen her:

Her er noen av de genererte navnene:

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

Legg til en suffiks til slutten av navnet

Som en endelig detalj, la oss legge til et suffiks, som vises på slutten av etternavnet. Legg til denne koden til begynnelsen av nameGenerator manus:

 var nameSuffixes: Array; funksjon Start () nameSuffixes = new Array (); nameSuffixes.Push ( "sønn"); nameSuffixes.Push ( "LI"); nameSuffixes.Push ( "ssen"); nameSuffixes.Push ( "kor"); 

Deretter legger du til følgende i CreateNewName (), før navnet blir samlet på slutten:

 // legger til et suffiks til etternavnet med en sjanse på 50% hvis (Tilfeldig.Range (0,100) < 50)  lastName += nameSuffixes[Random.Range(0, nameSuffixes.length)]; 

Nå er det en 50% sjanse for at et generert navn vil få et typisk navn som slutter.


Konklusjon

I denne opplæringen viste jeg deg den grunnleggende koden for å danne en navngenerator. Du kan utvide dette med ekstra variabler og funksjoner. Prøv å legge til:

  • Mellomnavn
  • Flere navnesuffikser (III, UBE og så videre)
  • Prefiks (Sir, Lady, Count og lignende)
  • Andre tillegg ("Glagnarr destructor")

Du kan også bruke denne ideen til andre ting: Gi romskip tilfeldige navn, eller opprett tilfeldige varebeskrivelser. Bli gal!


referanser

  • Bildekreditt: Identifisering av Rémy Médard fra Noun-prosjektet