Unity-programmeertrucs

Als het gaat om programmeren in Unity, is er een overvloed aan nuttige programmeer trefwoorden en opdrachten om de workflow en snelheid in de editor te verbeteren het ontwikkelingsproces op.

Sommige trefwoorden zijn bedoeld voor foutopsporing, terwijl andere zijn ontworpen om de editorlogica te scheiden van de scriptlogica.

1. '[SerializeField]' Attribuut

Standaard verbergt Unity privévariabelen voor de inspecteur, maar door er een '[SerializeField]' attribuut aan toe te voegen, worden ze configureerbaar in de inspecteur, terwijl ze ontoegankelijk blijven vanuit andere scripts.

[SerializeField]
private int myPrivateVariable;

2. '[HideInInspector]' en '[System.NonSerialized]' attributen

Zowel de kenmerken '[HideInInspector]' als '[System.NonSerialized]' hebben een soortgelijke functie, namelijk het verbergen van openbare variabelen voor de inspecteur. Ze verschillen echter enigszins qua serialisatie.

Het verschil tussen '[HideInInspector]' en '[System.NonSerialized]' is dat '[HideInInspector]' de variabele alleen voor de inspecteur verbergt, maar Unity zal doorgaan met het serialiseren ervan (wat betekent dat de standaardwaarde anders kan zijn dan degene die in de code wordt geleverd), zal '[System.NonSerialized]' daarentegen niet alleen de variabele verbergen voor de inspecteur, maar ook een signaal geven aan Unity om deze niet te serialiseren (wat betekent dat de standaardwaarde tussen sessies opnieuw wordt ingesteld zoals aangegeven in de code).

[HideInInspector]
public int myInternalVariable = 0; //Will always be 0 after the first initialization, so if you decide to change the value in the script, it may not always reflect in the Editor. Often used to remove clutter from the inspector.

[System.NonSerialized]
public int myNonSerializedVariable = 1; //The initial value will always be 1, or whatever value is set. Often used to mimic a private variable, while keeping it accessible from within other scripts.

3. '[ExecuteAlways]' Attribuut

'[ExecuteAlways]' dwingt het script uit te voeren in de bewerkingsmodus en de Prefab bewerkingsmodus, zelfs als het spel niet speelt. Dit kan handig zijn voor test- en foutopsporingsdoeleinden.

Het attribuut wordt toegevoegd vóór de klassedeclaratie:

[ExecuteAlways]
public class MyScript : MonoBehaviour {
    // ...
}

4. 'Debug.Break()'

'Debug.Break()' pauzeert de editor.

Deze functie is handig als u bepaalde waarden in het infovenster wilt controleren en deze niet handmatig kunt pauzeren.

void Update() {
    if (someCondition) {
        Debug.Break();
    }
}

5. '[Range]' Attribuut

Met het attribuut '[Range]' kunt u in de Editor een schuifregelaar maken voor een openbare float- of int-variabele, wat handig kan zijn om waarden onderweg op een gebruiksvriendelijkere manier aan te passen. Geef gewoon de minimale en maximale waarden op, zoals deze:

[Range(0f, 1f)]
public float myFloatVariable;

Reageer hieronder met uw favoriete programmeertips en -trucs in Unity.

Voorgestelde artikelen
Eenheidslijst met nuttige trefwoorden in C#
Inleiding tot Unity C#-scripttaal
Inzicht in de componentgebaseerde architectuur van Unity
Een GrabPack maken in Unity, geïnspireerd door Poppy Playtime
Een Bullet Time-effect creëren in eenheid
Interactieve objecten creëren in eenheid
Kinetische interacties in eenheid implementeren