- reference: https://docs.unity3d.com/6000.0/Documentation/ScriptReference/GameObject.html
- potomek třídy Object: https://docs.unity3d.com/6000.0/Documentation/ScriptReference/Object.html
- Základní třída pro všechny entity v Unity scénách.
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ázev | Popis |
GameObject.activeInHierarchy | Je tento GameObject aktivní ve scéně? (Vrací true pouze tehdy, pokud je aktivní sám objekt i všichni jeho rodiče). |
GameObject.activeSelf | Lokální stav aktivace tohoto GameObjectu. (Stav zaškrtávátka v Inspektoru, bez ohledu na rodiče). |
GameObject.isStatic | Určuje, zda je objekt označen jako statický (Static) pro optimalizace (např. navigace, dávkování vykreslování). |
GameObject.layer | Vrstva (Layer), ve které se GameObject nachází. Používá se pro fyzikální kolize a maskování kamery (číslo 0 až 31). |
GameObject.scene | Scéna (Scene), do které tento GameObject patří. |
GameObject.tag | Tag (štítek) přiřazený tomuto GameObjectu pro rychlou identifikaci. |
GameObject.transform | Komponenta 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ázev | Popis |
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 typuT, pokud je na GameObjectu připojena. Pokud ne, vrátínull.GetComponentInChildren<T>()Vrátí komponentu typuTna tomto GameObjectu nebo na jakémkoliv z jeho potomků (vyhledává do hloubky).GetComponentInParent<T>()Vrátí komponentu typuTna tomto GameObjectu nebo na jakémkoliv z jeho rodičů (vyhledává směrem nahoru v hierarchii).GetComponents<T>()Vrátí pole všech komponent typuTpřipojených na tomto GameObjectu.GetComponentsInChildren<T>()Vrátí pole všech komponent typuTna tomto objektu a všech jeho potomcích.TryGetComponent<T>(out T component)Bezpečnější a optimalizovaná verzeGetComponent. 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 typuTa 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 typuUpdate).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 typuTve 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);
}
}
}