Хитрощі програмування Unity

Коли мова йде про програмування в Unity, існує безліч корисних programming ключових слів і команд для покращення робочого процесу в редакторі та прискорення процесу розробки.

Деякі ключові слова призначені для налагодження, тоді як інші призначені для відділення логіки редактора від логіки сценаріїв.

1. '[SerializeField]' Атрибут

За замовчуванням Unity приховує приватні змінні від інспектора, але додавши перед ними атрибут '[SerializeField]', вони стануть доступними для налаштування в інспекторі, залишаючи їх недоступними з інших сценаріїв.

[SerializeField]
private int myPrivateVariable;

2. '[HideInInspector]' і '[System.NonSerialized]' Атрибути

Атрибути '[HideInInspector]' і '[System.NonSerialized]' мають подібну функцію, щоб приховати загальнодоступні змінні від інспектора, однак вони дещо відрізняються з точки зору серіалізації.

Різниця між '[HideInInspector]' і '[System.NonSerialized]' полягає в тому, що '[HideInInspector]' просто приховає змінну від інспектора, однак Unity продовжить її серіалізацію (це означає, що значення за замовчуванням може відрізнятися від зазначеного в коді), '[System.NonSerialized]', з іншого боку, не тільки приховає змінну від інспектора, але також сигналізує Unity не серіалізувати її (це означає, що значення за замовчуванням буде скинуто між сеансами до того, що надано в коді).

[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]' Атрибут

'[ExecuteAlways]' змушує сценарій виконуватися в режимі редагування та Prefab режимі редагування, навіть коли гра не відтворюється. Це може бути корисним для тестування та налагодження.

Атрибут додається перед оголошенням класу:

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

4. 'Debug.Break()'

'Debug.Break()' призупиняє редактор.

Ця функція корисна, коли ви хочете перевірити певні значення в інспекторі, і ви не можете призупинити його вручну.

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

5. '[Range]' Атрибут

Атрибут '[Range]' дозволяє створити повзунок у Редакторі для загальнодоступної змінної float або int, що може бути корисним для налаштування значень у дорозі зручнішим для користувача способом. Просто введіть мінімальне та максимальне значення, наприклад:

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

Прокоментуйте свої улюблені поради та підказки з програмування в Unity.

Рекомендовані статті
Список корисних ключових слів Unity в C#
Вступ до мови сценаріїв Unity C#
Розуміння компонентної архітектури Unity
Створення інтерактивних об’єктів в Unity
Реалізація кінетичних взаємодій в єдності
Відкривання ящиків і шаф за допомогою спеціальних ключів в Unity
Система «вибери та відпусти» без інвентарю в Unity