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.
Görev
OrtaTek bir varlığı paylaşarak okların tüm teknelerde rüzgârı değiştirmesini sağla.
SailboatiçindewindStrengthyerinepublic WindSettings wind;yaz vewind.strengthhızında ilerle.WindVaneiçindestrengthyerinepublic WindSettings wind;yaz.- Oklarla
wind.strengthdeğerini (0'dan 5'e) değiştir ve metnin bu değeriWind: 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
1Kalıtım Değil, Bileşenler
Küçük BileşenlerTemel Düşman Script'iSoyut BileşenlerBirlikte Çalışan BileşenlerTekrar: Modüler TaretTekrar: Çift Namlulu Top4Serileştirilmiş Veriler
Serileştirilebilir SınıflarInspector'da ListelerInspector'da Enum'larTekrar: Ganimet TablosuTekrar: Ganimeti At2Unity'de Arayüzler
IDamageableArayüzler ve TryGetComponentGetComponentsÖzet: Etkileşim TuşuÖzet: Erişim Mesafesindeki En Yakın5ScriptableObjects
Veri VarlıklarıSilah İstatistikleriOrtak AyarlarRüzgârı KaydetVeri Olarak DalgalarTekrar: Eşya VeritabanıTekrar: Dükkândan Satın Al8Yeniden Kullanılabilir Kod
Genişletme MetotlarıGeneric SingletonGeneric YardımcılarTekrar: FindNearestKendi başına pratik yap: Unity playground