Menu
CoddyTech

Ortak Ayarlar

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 25 / 64.

Zorluk ayarı tüm düşmanları aynı anda değiştirir; bu nedenle hepsinin başvurduğu tek bir varlık için uygundur. Her düşman varlığın hızını her karede okur ve menüdeki Hard düğmesi de aynı varlığa yazar:

[CreateAssetMenu(menuName = "Game/Difficulty")]
public class Difficulty : ScriptableObject
{
    public float enemySpeed = 2f;
}
public class Enemy : MonoBehaviour
{
    public Difficulty difficulty;
    public Transform player;

    void Update()
    {
        float step = difficulty.enemySpeed * Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, player.position, step);
    }
}
// DifficultyMenu.cs, Hard düğmesinin onClick olayına bağlanmış
public Difficulty difficulty;

public void SetHard()
{
    difficulty.enemySpeed = 4f;
}

Düşmanların alanları ve menünün alanı aynı varlığı tutar; bu nedenle SetHard() çağrısından sonra her düşmanın bir sonraki Update çağrısı 4 değerini okur. Alanında bu varlık bulunan bir prefab'dan daha sonra oluşturulan düşmanlar da buna dahildir. Bu, her düşmanın hareket ederken difficulty.enemySpeed değerini okuması sayesinde çalışır. Start içinde bu değeri kendi alanına kopyalayan bir düşman 2 hızıyla hareket etmeyi sürdürür.

Oyun sırasında yapılan bir değişikliğin nereye kaydedileceği, oyunun nerede çalıştığına bağlıdır. Bir derleme, her başladığında varlıklarını derleme sırasında oldukları hâliyle yükler; bu nedenle oyuncunun Hard seçimi sonraki oyunda kaybolur. Seçimi korumak için PlayerPrefs ile kaydedip oyun başladığında yeniden varlığa yazın. Editor'da projenizdeki varlık, oyunun değiştirdiği varlığın kendisidir ve Stop'a bastıktan sonra da değişiklik kalır; sahnedeki nesneler ise Inspector değerlerine döner. Bir sonraki Play, Hard ayarında başlar ve siz sıfırlayana kadar varlıkta 4 değeri kalır.

challenge icon

Görev

Orta

Tek bir varlığı paylaşarak okların tüm teknelerde rüzgârı değiştirmesini sağla.

  1. Sailboat içinde windStrength yerine public WindSettings wind; yaz ve wind.strength hızında ilerle.
  2. WindVane içinde strength yerine public WindSettings wind; yaz.
  3. Oklarla wind.strength değerini (0'dan 5'e) değiştir ve metnin bu değeri Wind: 3 şeklinde göstermesini sağla.

“Oyna” düğmesine bas ve Yukarı okuna bas: üç teknenin de hızı artar. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class WindVane : MonoBehaviour
{
    public TMP_Text windText;
    public float strength = 2f;

    void Start()
    {
        Show();
    }

    void Update()
    {
        if (Keyboard.current.upArrowKey.wasPressedThisFrame)
        {
            strength = Mathf.Min(strength + 1f, 5f);
            Show();
        }
        if (Keyboard.current.downArrowKey.wasPressedThisFrame)
        {
            strength = Mathf.Max(strength - 1f, 0f);
            Show();
        }
    }

    void Show()
    {
        windText.text = "Wind: " + strength;
    }
}

Unity'de Oyun Mimarisi bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground