GameObject.Find

Deklarasyon

public static GameObject Find(string name);


Açıklama

Bir GameObject'i adıyla bulur ve döndürür.

Bu fonksiyon yalnızca aktif GameObject'leri döndürür. Belirtilen adla bir GameObject bulunamazsa, null döndürülür. Ad bir '/' karakteri içeriyorsa, hiyerarşiyi bir yol adı gibi tarar.

Performans nedenleriyle, bu fonksiyonun her karede kullanılmaması önerilir. Bunun yerine, sonucu başlangıçta bir üye değişkenine önbelleğe alın veya GameObject.FindWithTag kullanın.

Not: Bir alt GameObject bulmak istiyorsanız, Transform.Find kullanmak genellikle daha kolaydır.

Not: Oyun birden fazla sahne ile çalışıyorsa, Find tüm sahnelerde arama yapacaktır.

using UnityEngine;
using System.Collections;

// Bu, sahnelerden birinde Hand adlı GameObject'i döndürür.
public class ExampleClass : MonoBehaviour
{
    public GameObject hand;

    void Example()
    {
        // Bu, Hand adlı GameObject'i döndürür.
        hand = GameObject.Find("Hand");

        // Bu, Hand adlı GameObject'i döndürür.
        // Hand, hiyerarşi görünümünde bir ebeveyne sahip olmamalıdır.
        hand = GameObject.Find("/Hand");

        // Bu, Arm > Monster'ın bir çocuğu olan Hand adlı GameObject'i döndürür.
        // Monster, hiyerarşi görünümünde bir ebeveyne sahip olmamalıdır.
        hand = GameObject.Find("/Monster/Arm/Hand");

        // Bu, Arm > Monster'ın bir çocuğu olan Hand adlı GameObject'i döndürür.
        hand = GameObject.Find("Monster/Arm/Hand");
    }
}


GameObject.Find, yükleme sırasında diğer nesnelere referansları otomatik olarak bağlamak için kullanışlıdır; örneğin, MonoBehaviour.Awake veya MonoBehaviour.Start içinde.

Performans nedenleriyle, bu fonksiyonun her karede kullanılmaması önerilir.

Yaygın bir desen, bir GameObject'i MonoBehaviour.Start içinde bir değişkene atamak ve MonoBehaviour.Update içinde bu değişkeni kullanmaktır.

using UnityEngine;
using System.Collections;

// Hand adlı GameObject'i bul ve her karede döndür
public class ExampleClass : MonoBehaviour
{
    private GameObject hand;

    void Start()
    {
        hand = GameObject.Find("/Monster/Arm/Hand");
    }

    void Update()
    {
        hand.transform.Rotate(0, 100 * Time.deltaTime, 0);
    }
}


Bu blog Unity Docs'un Türkçeye çevrilmiş halidir.

Yorumlar

Bu blogdaki popüler yayınlar

Important Classes - Vectors

RequireComponent

Important Classes - GameObject