Unity GameObject


Tato třída reprezentuje jakýkoliv objekt, který může existovat ve scéně a její hierarchii. GameObject v sobě obsahuje kolekci komponent (Components), které definují jeho skutečné chování, vzhled a funkčnost.

V C# kódu se třída GameObject používá k vytváření nových objektů za běhu hry, k vyhledávání existujících objektů ve scéně, k aktivaci/deaktivaci objektů nebo k přístupu ke komponentám, které jsou na daném objektu připojeny.

Statické vlastnosti

(statické vlastnosti nemůžeme měnit za běhu programu, můžeme je jen číst)

NázevPopis
GameObject.activeInHierarchyJe tento GameObject aktivní ve scéně? (Vrací true pouze tehdy, pokud je aktivní sám objekt i všichni jeho rodiče).
GameObject.activeSelfLokální stav aktivace tohoto GameObjectu. (Stav zaškrtávátka v Inspektoru, bez ohledu na rodiče).
GameObject.isStaticUrčuje, zda je objekt označen jako statický (Static) pro optimalizace (např. navigace, dávkování vykreslování).
GameObject.layerVrstva (Layer), ve které se GameObject nachází. Používá se pro fyzikální kolize a maskování kamery (číslo 0 až 31).
GameObject.sceneScéna (Scene), do které tento GameObject patří.
GameObject.tagTag (štítek) přiřazený tomuto GameObjectu pro rychlou identifikaci.
GameObject.transformKomponenta Transform připojená k tomuto GameObjectu (poskytuje přístup k pozici, rotaci a hierarchii).

Konstruktory

Funkce, které dokáží vytvořit objekt na scéně:

NázevPopis
GameObject()Vytvoří nový, prázdný GameObject s výchozím názvem („New GameObject“) a základní komponentou Transform.
GameObject(string name)Vytvoří nový prázdný GameObject se specifickým názvem.
GameObject(string name, params Type[] components)Vytvoří GameObject se specifickým názvem a automaticky k němu přidá pole definovaných komponent.

Veřejné metody

Správa komponent (Components)
  • GetComponent<T>() Vrátí komponentu typu T, pokud je na GameObjectu připojena. Pokud ne, vrátí null.
  • GetComponentInChildren<T>() Vrátí komponentu typu T na tomto GameObjectu nebo na jakémkoliv z jeho potomků (vyhledává do hloubky).
  • GetComponentInParent<T>() Vrátí komponentu typu T na tomto GameObjectu nebo na jakémkoliv z jeho rodičů (vyhledává směrem nahoru v hierarchii).
  • GetComponents<T>() Vrátí pole všech komponent typu T připojených na tomto GameObjectu.
  • GetComponentsInChildren<T>() Vrátí pole všech komponent typu T na tomto objektu a všech jeho potomcích.
  • TryGetComponent<T>(out T component) Bezpečnější a optimalizovaná verze GetComponent. Vrátí true, pokud komponenta existuje, a naplní ji do výstupní proměnné. Negeneruje garbage (vnitřní alokace paměti) v editoru, pokud komponenta chybí.
  • AddComponent<T>() Vytvoří novou komponentu typu T a připojí ji k tomuto GameObjectu.
Stav objektu a zprávy (Messages)
  • SetActive(bool value) Aktivuje nebo deaktivuje GameObject. Deaktivovaný objekt je skrytý a jeho komponenty (skripty, fyzika) jsou pozastaveny.
  • CompareTag(string tag) Efektivně ověří, zda má GameObject daný tag. Je výrazně rychlejší než přímé porovnání řetězců pomocí go.tag == tag.
  • SendMessage(string methodName) Zavolá metodu s daným názvem na každém skriptu (MonoBehaviour) připojeném k tomuto GameObjectu.
  • BroadcastMessage(string methodName) Zavolá metodu s daným názvem na každém skriptu na tomto GameObjectu a na všech jeho potomcích.
Statické metody (Static Methods)
  • GameObject.Find(string name) Vyhledá GameObject v celé scéně podle jeho názvu a vrátí jej. (Pozor: Tato operace je velmi náročná na výkon a neměla by se volat v metodách typu Update).
  • GameObject.FindWithTag(string tag) / GameObject.FindGameObjectWithTag(string tag) Vrátí první aktivní GameObject, který má přiřazen specifikovaný tag. Vrátí null, pokud objekt nebyl nalezen.
  • GameObject.FindGameObjectsWithTag(string tag) Vrátí pole (GameObject[]) všech aktivních objektů ve scéně, které jsou označeny daným tagem.
  • GameObject.FindAnyObjectByType<T>() (Novinka v novějších verzích / Unity 6) Vyhledá jakýkoliv aktivní objekt typu T ve scéně. Rychlejší než dřívější FindObjectOfType, protože se zastaví při prvním nalezeném úspěchu.
  • GameObject.FindObjectsByType<T>(FindObjectsSortMode sortMode) Vrátí seznam všech objektů daného typu ve scéně, s možností řazení (např. podle instance ID).

Příklad použití v C#

Následující ukázka demonstruje vytvoření objektu, přidání komponenty a vyhledání jiného objektu pomocí tagu:

Příklad použití v C#

Následující ukázka demonstruje vytvoření objektu, přidání komponenty a vyhledání jiného objektu pomocí tagu:
C#

using UnityEngine;

public class GameObjectExample : MonoBehaviour
{
    void Start()
    {
        // 1. Vytvoření nového GameObjectu jménem "Sfera"
        GameObject mojeSfera = new GameObject("Sfera");

        // 2. Přidání komponenty pro simulaci fyziky (Rigidbody)
        Rigidbody rb = mojeSfera.AddComponent<Rigidbody>();
        rb.mass = 5.0f; // Nastavení hmotnosti

        // 3. Nalezení hráče podle tagu a vypsání jeho jména
        GameObject hrac = GameObject.FindWithTag("Player");
        if (hrac != null)
        {
            Debug.Log("Hráč nalezen! Jmenuje se: " + hrac.name);
        }
    }
}