GameObject je sám o sobě pouze prázdnou schránkou. Aby se z něj stal skutečný herní prvek, musíme do něj vložit konkrétní vlastnosti. V Unity to děláme pomocí komponent (Components).
Co je to komponenta?
Komponenta je samostatný funkční modul (skript), který lze připojit k GameObjectu.
Jeden GameObject na sobě může mít libovolné množství různých komponent, ale (ve většině případů, neplatí to např. pro collidery) pouze jednu komponentu stejného typu. Tento limit můžeme obcházet tím, že vložíme více GameObjectů do sebe.
Základní komponenty v Unity
Komponenty pro Rendering
- Mesh Filter: Drží referenci na 3D model (geometrii/síť bodů), který určuje tvar objektu.
- Mesh Renderer: Bere geometrii z Mesh Filteru a vykresluje ji na obrazovku za použití Materiálů (textury, barvy, odrazivost).
- Sprite Renderer: Obdoba Mesh Rendereru pro 2D grafiku (pracuje s obrázky/sprity).
Fyzikální komponenty
- Rigidbody (3D) / Rigidbody 2D: Zapojuje objekt do fyzikálního enginu. Bez této komponenty objekt nereaguje na gravitaci ani na nárazy ostatních těles.
- Collidery (Box, Sphere, Capsule, Mesh): Definují neviditelné fyzikální hranice objektu. Zajišťují, že objekty nepropadnou podlahou a dokážou detekovat srážky (kolize). Collidery dělíme na 2D a 3D collidery.
Zvuky a světla
- Light: Promění objekt ve zdroj světla (bodové, směrové neboli slunce, reflektor).
- Audio Source: Přehrávač zvuku. Může simulovat 3D zvuk, kdy se hlasitost mění podle vzdálenosti kamery od objektu.
Práce s komponentami v Editoru
Komponenty spravujeme přímo v okně Inspector poté, co označíme daný GameObject.
Přidání komponenty
- Klikněte na tlačítko Add Component ve spodní části Inspektoru.
- Začněte psát název hledané komponenty (např. „Rigidbody“) nebo procházejte kategorie.
- Kliknutím komponentu vložíte.
Odstranění a manipulace
- Vypnutí komponenty: Většina komponent má vedle svého názvu zaškrtávátko (Checkbox). Pokud jej odškrtnete, komponentu dočasně deaktivujete (např. vypnete světlo nebo skript), aniž byste ji smazali.
- Odstranění (Remove): Kliknutím na ikonu tří teček (
⋮) v pravém rohu komponenty a zvolením Remove Component ji z objektu trvale smažete. - Kopírování (Copy/Paste): Přes stejné menu můžete nastavení komponenty zkopírovat (
Copy Component) a vložit na jiný objekt (Paste Component As New).
Komponenty v C# kódu
Všechny komponenty dědí vlastnosti ze základní třídy Component.
reference: https://docs.unity3d.com/2022.2/Documentation/ScriptReference/Component.html
Ovládání komponenty
Pro ovládání komponenty k ní potřebujeme získat přístup. Můžeme referenci (přístup) získat buď pomocí vyhledání komponenty přes příkaz GetComponent.
Příkaz GetComponent:
using UnityEngine;
public class OvladaniKostky : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
// Získáme komponentu Rigidbody připojenou na stejném objektu
rb = GetComponent<Rigidbody>();
}
}
Přidání komponenty za běhu programu (komponenta v editoru neexistuje)
void AktivujSvetlo()
{
// Přidá na GameObject komponentu Light a rovnou si uloží referenci
Light bodoveSvetlo = gameObject.AddComponent<Light>();
// Nastavení parametrů nového světla
bodoveSvetlo.type = LightType.Point;
bodoveSvetlo.color = Color.red;
bodoveSvetlo.range = 10f;
}