Sztuczki programowania w Unity

Jeśli chodzi o programowanie w języku Unity, istnieje mnóstwo przydatnych słów kluczowych i poleceń programming poprawiających przepływ pracy w edytorze i przyspieszających proces programowania.

Niektóre słowa kluczowe są przeznaczone do debugowania, podczas gdy inne mają na celu oddzielenie logiki edytora od logiki skryptów.

1. '[SerializeField]' Atrybut

Domyślnie Unity ukrywa zmienne prywatne przed inspektorem, ale dodając przed nimi atrybut '[SerializeField]', staną się one konfigurowalne w inspektorze, a jednocześnie będą niedostępne z poziomu innych skryptów.

[SerializeField]
private int myPrivateVariable;

2. '[HideInInspector]' oraz '[System.NonSerialized]' Atrybuty

Oba atrybuty '[HideInInspector]' i '[System.NonSerialized]' pełnią podobną funkcję, polegają na ukryciu zmiennych publicznych przed inspektorem, różnią się jednak nieco pod względem serializacji.

Różnica pomiędzy '[HideInInspector]' i '[System.NonSerialized]' polega na tym, że '[HideInInspector]' po prostu ukryje zmienną przed inspektorem, jednakże Unity będzie kontynuować jej serializację (co oznacza, że ​​domyślna wartość może być inna niż ta podana w kodzie), Z drugiej strony '[System.NonSerialized]' nie tylko ukryje zmienną przed inspektorem, ale także zasygnalizuje Unity, aby jej nie serializowała (co oznacza, że ​​domyślna wartość będzie resetowana pomiędzy sesjami do wartości podanej w kodzie).

[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]' Atrybut

'[ExecuteAlways]' wymusza wykonanie skryptu w trybie edycji i trybie edycji Prefab, nawet gdy gra nie jest odtwarzana. Może to być przydatne do celów testowania i debugowania.

Atrybut jest dodawany przed deklaracją klasy:

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

4. 'Debug.Break()'

'Debug.Break()' pauzuje redaktor.

Funkcja ta przydaje się, gdy chcemy sprawdzić pewne wartości w inspektorze, a nie możemy ich zatrzymać ręcznie.

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

5. '[Range]' Atrybut

Atrybut '[Range]' umożliwia utworzenie w Edytorze suwaka dla publicznej zmiennej typu float lub int, co może być przydatne do dostosowywania wartości na bieżąco w sposób bardziej przyjazny dla użytkownika. Po prostu podaj wartości minimalne i maksymalne, w ten sposób:

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

Skomentuj poniżej swoje ulubione porady i triki programistyczne w Unity.