Menu
CoddyTech

Prefab'ler ve Instantiate

Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 48 / 67.

Bir prefab, şablon olarak kaydedilmiş bir GameObject'tir: Hierarchy'den bir nesneyi Project penceresine sürükleyin; Unity, tüm bileşenleri ve Inspector değerleriyle birlikte onu kaydeder. Prefab'ın kendisi sahnede değildir. Bir betik, diğer tüm referanslar gibi bir alan aracılığıyla prefab'a erişir: public GameObject parcelPrefab; bildirimini yapın ve prefab'ı Inspector'daki bu alana sürükleyin.

Instantiate(prefab, position, rotation), prefab'ın sahnede bir kopyasını oluşturur ve bu kopyayı döndürür. Bu teslimat dronu, Space tuşuna her basıldığında kendi konumuna bir paket bırakır. Quaternion.identity, herhangi bir döndürme olmadığı anlamına gelir:

public GameObject parcelPrefab;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Instantiate(parcelPrefab, transform.position, Quaternion.identity);
    }
}

Her basış, Hierarchy'ye Parcel(Clone) adlı bir nesne daha ekler. Prefab olduğu gibi kalır; dolayısıyla her kopya aynı değerlerle başlar. Burada GetKeyDown önemlidir: GetKey kullanıldığında Space tuşunu yarım saniye basılı tutmak, her karede bir tane olmak üzere yaklaşık 30 paket bırakır.

challenge icon

Görev

Orta

Oklar oyuncuyu zaten hareket ettiriyor. Her tıklamada oyuncunun üstünde bir coin oluştur:

  • GameObject türünde, coinPrefab adlı bir public alan ekle. Alan oluşturulur oluşturulmaz sahne, Coin prefab'ını bu alana yerleştirir.
  • Sol fare düğmesine tıklandığında, oyuncunun 2 birim üstünde ve hiç döndürmeden coin'in bir kopyasını oluştur.

Play'e bas, birkaç kez hareket edip tıkla, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class CoinDropper : MonoBehaviour
{
    public float speed = 4f;
    // coinPrefab: Coin prefab'ıyla doldurulmuş public bir GameObject alanı

    void Update()
    {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
        }

        // Tıklama: oyuncunun 2 birim üzerinde bir coin oluştur
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler