Unity Growing Pains

Unity is een geweldig platform en het blijft groeien. Net als veel andere game-ontwikkelaars ben ik overgeschakeld naar Unity als mijn belangrijkste platform voor game-ontwikkeling. Hoewel Unity een van de meest gebruiksvriendelijke spelontwikkelprogramma's is die ik ooit heb mogen gebruiken, is het niet vrij van groeipijnen. Ik heb gewerkt aan het overwinnen en documenteren van deze onderzoeken, en in dit artikel zal ik mijn ervaring delen.

gerelateerde berichten
  • Eenheid leren

De inspecteur begrijpen

In de Unity Inspector ziet u alle informatie over het geselecteerde object in de scèneweergave.


Als u een kubus maakt en vervolgens selecteert, toont de Inspecteur de kubus Transformeren component, die de X, Y, en z eigenschappen van de positie, rotatie en schaal van de kubus. Als je een meer complexe vijand hebt die je hebt gemaakt, zal het selecteren ervan alle informatie over dat object weergeven, waaronder elk aantal componenten die je aan dat object hebt gekoppeld..

gerelateerde berichten
  • Eenheid: nu denk je met componenten

Er is één valstrik: om een ​​eigenschap zichtbaar te maken in de Inspector, moet deze openbaar worden gemaakt in welk script die eigenschap ook hoort: als u de property wilt zien vuur snelheid variabele van een component gekoppeld aan uw object vuur snelheid moet worden gedeclareerd als een openbare variabele.

Dit is waar de echte kracht van de Inspecteur in het spel komt, en hier moet nog een andere truc geleerd worden. Elke eigenschap die zichtbaar is in de Inspector kan voor dat object worden bewerkt. Als uw script een standaardwaarde voor een eigenschap via code instelt, is het erg belangrijk om dat te weten de waarde van de Inspecteur zal deze overschrijven. Dit betekent dat als het vuur snelheid variabele had de standaardwaarde van 4, en je hebt het ingesteld op 8 in de inspecteur, dan is de vuur snelheid variabele voor dat object blijft zoals 8, zelfs als u de waarde wijzigt in 4 in het script en sla het op.

(Merk op dat het instellen van de variabele op een andere scope dan public-dat wil zeggen, op private of protected-de eigenschap terugzet naar de scriptwaarde en de waarde zal verbergen voor de Inspector.)

De laatste truc om te onthouden is dat waarden die in de Inspector zijn bewerkt terwijl ze zich in de Scèneweergave bevonden toen het spel niet draaide, worden opgeslagen, terwijl de waarden tijdens het spel in de Inspector werden gewijzigd is tijdens live bewerken (ja, je kunt variabelen bewerken tijdens het testen!) zullen terugkeren naar hun waarden zodra je klaar bent met het testen van het project.

Deze paar kernpunten zijn niet te ingewikkeld, maar het is erg belangrijk dat je ze onthoudt, omdat het niet bewust zijn van dit alles kan leiden tot een aantal zeer verwarrende debugging.


prefabs

Prefabs zijn een van de belangrijkste aspecten van Unity, maar in het begin kunnen ze een beetje verwarrend zijn, omdat er een paar kleine eigenaardigheden zijn die niet meteen zichtbaar zijn op het eerste gezicht..

Een prefab is in essentie een vooraf gedefinieerde definitie van een object - een blauwdruk, in alle opzichten en doelen, net als een klasse in OOP. Prefabs kunnen worden samengesteld uit een willekeurig aantal game-objecten, afbeeldingen, componenten, enzovoort. Ze kunnen het beste worden gebruikt als u veel exemplaren van een object wilt hebben en mogelijk kleine wijzigingen van dat specifieke object wilt.


Als u een aantal prefabs in uw scène hebt en een wijziging aanbrengt in de prefab-definitie, worden alle exemplaren van dat prefab bijgewerkt. Als u echter een update naar een specifieke instantie wilt uitvoeren, drukt u op Van toepassing zijn, alle instanties van de prefab (evenals de hoofd prefabdefinitie) worden bijgewerkt naar de configuratie van die specifieke instantie. Als u variabelen van Inspector of andere eigenschappen van een instantie van een prefab hebt gewijzigd, kunt u op drukken terugkeren om die instantie terug te zetten naar dezelfde configuratie als de prefabdefinitie.


Door de 3D-ruimte van de editor navigeren

Een van de eerste dingen waar ik mee worstelde in Unity, zelfs na het bekijken van een hoop video's met tutorials, was hoe je door de visuele 3D-ruimte in de editor navigeerde. Ik was weliswaar een complete beginneling in de 3D-ruimte zonder vast te zitten aan een personage (zoals bij het spelen van een spel voor de eerste of derde persoon), maar ik vond beweging toch een beetje vreemd en gecompliceerd.

Het is helemaal niet slecht als je er eenmaal aan gewend bent, maar een beetje meer richting hebben wanneer ik er voor het eerst in sprong zou geweldig zijn geweest, dus hier zijn een aantal nuttige commando's om goed door de 3D-ruimte van de editor te navigeren:


  • Klik met de rechtermuisknop Sleep: Kijk vrij rond in de 3D-ruimte, zonder echt te bewegen.
  • Klik op Object + F: Focus direct op een object en verplaats de camera recht voor de camera.
  • Alt + linker muisklik slepen: Roteer rond het momenteel gefocuste object.
  • Alt + Rechts klikken slepen: Verschillende zoommechanieken.
  • Scrollwiel vooruit / achteruit: Zoom in en uit direct vooruit of achteruit.
  • Scrollwiel Klik en sleep: Vrij naar boven, naar beneden, naar links en naar rechts, in de 3D-ruimte.
  • Pijltjestoetsen: Ga direct vooruit, achteruit, links of rechts.

Samen met Z

Ongeacht of u een 2D- of een 3D-game maakt, u wilt bekend raken met de legendarische z-as. Veel klassen en functies maken gebruik van de z-as, en hoewel u de positie van een object op de z-as misschien niet wilt veranderen, moet u er bewust van zijn en de rol die het speelt in verschillende functies..

Het meest voorkomende uiterlijk van de z-as, dat echt niet kan worden vermeden, is het gebruik ervan in de Vector3 klasse. Elk object in Unity heeft een Transformeren component, dat is wat de informatie bevat voor rotatie, positie en alle gerelateerde gegevens. In Unity, tranform.position is een Vector3, die de x-, y- en z-coördinaten van het object bevat.

Dus zelfs als je spel 2D is, zul je moeten werken met de Vector3 klasse, en u moet daarom op de hoogte zijn van deze parameter. Het gemakkelijkste om te doen, in dit geval, is om ofwel de z parameter naar 0, of om het in te stellen op stroom z-waarde door deze te lezen transform.position.z.


Basisbeweging

Zoals ik hierboven al zei, wordt alle bewegingsgerelateerde informatie opgeslagen in a Transformeren component. Ah, maar je kunt niet gewoon schrijven naar de transform.position Vector3-althans niet in C #. In plaats daarvan moet u een nieuwe maken Vector3, stel de waarden van uw in Vector3 (X, Y, en z) en stel vervolgens in transform.position naar je nieuwe Vector3, als volgt:

// We kunnen niet schrijven naar transform.position, dus we maken een nieuwe Vector3: Vector3 newPosition; newPosition = new Vector3 (theX, theY, theZ); // Stel transform.position in op het nieuwePosition Vector3-object. transform.position = newPosition;

Hoewel dit niet bepaald gecompliceerd is, zal het zeker bijdragen aan de stapel dingen om je te laten struikelen als je het niet weet!


Conclusie

Al met al is niets hierboven bijzonder geavanceerd of erg technisch; het is gewoon een hoop informatie die beginners tot Unity vaak missen tijdens het leren. Iedereen kan dit uiteindelijk allemaal uitvogelen, maar het kan ontelbare uren debuggen, googelen en experimenteren duren, en dat is niet nodig.

Ik heb elke afzonderlijke instructievideo op de Unity-site bekeken en hoewel het redelijk is om te zeggen dat ik die niet heb geabsorbeerd allemaal van de informatie de eerste keer, wordt veel van het bovenstaande simpelweg niet vermeld, of krijgt niet genoeg aandacht om het op te laten vallen. Het leren van alles wat ik heb geleerd heeft me geruime tijd gekost en hopelijk zal deze gecompileerde lijst met informatie de leercurve voor toekomstige beginners naar Unity-ontwikkeling versnellen.

Welke groeipijnen kom je tegen tijdens het leren van Unity?