Unity Game Lab
60 subscribers
42 photos
26 videos
3 files
17 links
🔧 Unity Game Lab | Геймдев-лаборатория

Разрабатываю динамичный fps:
https://redatomteam.itch.io/creatures
Download Telegram
Channel created
Channel name was changed to «Unity Game Lab»
Channel photo updated
🔥 Что такое GameObject в Unity? | Часть 1

GameObject — это фундаментальный строительный блок любой сцены в Unity.
📌 Проще говоря: всё, что вы видите в сцене (камеры, 3D-объекты, UI-элементы) — это GameObject'ы!

📦 GameObject = Контейнер для компонентов
Сам по себе GameObject — просто "пустая коробка". Его функциональность определяют компоненты, которые к нему прикреплены:
Transform — позиция/размер/поворот
MeshRenderer — отображение 3D-модели
Collider — обработка столкновений
• И любые ваши скрипты!

🔧 Ключевые особенности
1. Наследование
• Происходит от класса UnityEngine.Object (не путать с System.Object!).
• Даёт доступ к методам вроде Destroy(), Find(), Instantiate().

2. Основные свойства
name — Имя объекта (можно менять в runtime).
tag — Метка для быстрого поиска/фильтрации.
activeSelf — Локальная активность (SetActive(true/false)).
activeInHierarchy — Учитывает активность родителей.
transform — Ссылка на компонент Transform (есть у всех GameObject'ов).

3. Оптимизация
isStatic — для "запечённого" освещения и других оптимизаций.
layer — управление рендерингом и физикой.

🚀 Что разберём в следующих постах?
• Методы создания и удаления объектов
• Управление компонентами объектов.
• Поиск объектов на сцене.
🔧 Создание и удаление GameObject в Unity | Часть 2

GameObject — как Lego-деталь: можно собрать новую, скопировать существующую или даже разобрать на части. Сегодня разберём все способы работы с объектами!

🛠 3 способа создания объектов
1. Через конструкторы
// 1. Просто пустой объект
GameObject emptyGO = new GameObject();

// 2. С именем (удобно для поиска!)
GameObject namedGO = new GameObject("МойОбъект");

// 3. С готовыми компонентами
GameObject audioGO = new GameObject("Аудио", typeof(AudioSource));


2. Клонирование (Instantiate)
Основной метод для работы с префабами:
public GameObject prefab; // Ссылка на префаб

void Start() {
// Клонируем с позицией и поворотом
GameObject clone = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity);
}

3. Примитивы (кубы, сферы)
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

Доступные примитивы:
▫️ Cube ▫️ Sphere ▫️ Cylinder
▫️ Capsule ▫️ Plane ▫️ Quad

💥 Уничтожение объектов
// 1. Обычное удаление (в конце кадра)
Destroy(gameObject);

// 2. С задержкой (например, для эффектов)
Destroy(gameObject, 3f); // Через 3 секунды

// 3. Мгновенное удаление (осторожно!)
DestroyImmediate(gameObject);


⚠️ Важно:

DestroyImmediate может нарушить порядок выполнения кода. Используйте только в особых случаях!

📌 Итог
new GameObject() — Для пустых "контейнеров"
Instantiate() — Для префабов и копий
CreatePrimitive() — Для быстрого прототипирования
Destroy() — Для безопасного удаления

💡 Пример из практики:
// Создаём временный эффект
GameObject effect = Instantiate(explosionPrefab);
Destroy(effect, 2f); // Автоудаление через 2 секунды


🔜 В следующей части:

Разберём методы работы с компонентами!