Unity C#
Метод Awake в Unity C# — ранняя инициализация объекта
Метод Awake — один из встроенных методов Unity. Он вызывается при создании экземпляра объекта, даже если тот ещё не активирован на сцене. В нём выполняют действия, которые должны произойти раньше всех остальных методов, включая Start.
Основные особенности Awake
- Ранний вызов: Unity вызывает Awake до всех остальных методов, сразу после создания объекта.
- Инициализация зависимостей: подходит для настройки объектов, которые понадобятся другим компонентам.
- Вызывается один раз: выполняется единожды за весь жизненный цикл объекта, даже если его выключали и снова включали.
Awake против Start
Главное отличие: Awake срабатывает раньше Start и не зависит от того, активен объект или нет. Поэтому в Awake обычно настраивают внутреннее состояние объекта, а в Start — то, что зависит от уже готовых других компонентов.
Пример кода
В этом примере враг в Awake находит игрока по тегу, а в Start просто сообщает о готовности:
using UnityEngine;
public class Enemy : MonoBehaviour
{
private GameObject player;
// Метод Awake используется для ранней инициализации
void Awake()
{
player = GameObject.FindWithTag("Player"); // Находим объект с тегом Player
Debug.Log("Игрок найден: " + player.name);
}
void Start()
{
Debug.Log("Объект готов к работе");
}
}