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("Объект готов к работе");
	}
}