Spin Wheel

Verilecek ödüllerin daha önceden belirlenebildiği bir wheel sistemini sizlerle paylaşmak istedim.

Sistem içerisinde scriptable object şeklinde tanımlanan ödülleri tur sayısı ve dönüş hızı düzenlemeleriyle istediğiniz ödülü öncesinde tanımlayabileceğiniz yapıya sahip bir oyun. Kaynak kodlarına buraya tıklayarak ulaşabilirsiniz.

Sistem tasarımı aşağıdaki şekildedir.

Reward classı içerisinde IReward interface i kullanılarak istenilen şekilde tüm ödüllerin datalarına rahatlıkla erişilebilecek şekilde bir yapı oluşturdum.

public interface IReward
{
    Sprite icon{ get; set; }
    string name{ get; set; }
    int value{ get; set; }
    int id { get; set; }
}

Tüm ödüller Scriptable Objectler içerisinde oluşturulan ödüllerin datalarıyla Reward Managerda tutuluyor ve Reward factory üzerinde oluşturuluyor. Daha sonra wheel içerisindeki tanımlı bölgelere Reward Behaviour aracılığıyla atamaları yapılıyor.

[SerializeField] public int id = 0;
[SerializeField] public string rewardName = "Reward";
[SerializeField] public Sprite icon;
[SerializeField] public int value = 0;
public Reward GetReward(int id)
{
        Reward reward = new Reward();
        reward.icon = rewardManager.GetIcon(id);
        reward.name = rewardManager.GetName(id);
        reward.value = rewardManager.GetValue(id);
        reward.id = id;

        return reward;
}
public void Initialize(IReward rewardData)
{
        this._data = rewardData;
        imageStartPosition = iconRenderer.transform.localPosition;
        imageStartScale = iconRenderer.transform.localScale;

        SetIcon();
        SetName();
        SetValue();
}

Yorum bırakın