using UnityEngine;
using UnityEngine.UI;
public class WeaponPick : MonoBehaviour
{
[SerializeField] private Image[] weaponIcons;
[SerializeField] private Sprite[] weaponSprites;
private const byte weaponCount = 7;
private byte[] weaponSlots = new byte[4];
[SerializeField] private string[] weaponKeys = new string[4];
[SerializeField] private string[] weaponAvailabilityKeysNames;
private void Awake()
{
for (int i = 0; i < 4; i++)
{
weaponSlots[i] = (byte)PlayerPrefs.GetInt(weaponKeys[i], 0);
UpdateWeaponIcon((byte)i);
}
}
public void increment(int slotNumber)
{
for (int i = 0; i < weaponCount; i++)
{
weaponSlots[slotNumber] = (byte)((weaponSlots[slotNumber] + 1) % weaponCount);
if (WeaponAvailabilityCheck((byte)slotNumber))
{
break;
}
}
UpdateWeaponIcon((byte)slotNumber);
SavePick((byte)slotNumber);
}
public void decrement(int slotNumber)
{
for (int i = 0; i < weaponCount; i++)
{
weaponSlots[slotNumber] = (byte)((weaponSlots[slotNumber] - 1 + weaponCount) % weaponCount);
if (WeaponAvailabilityCheck((byte)slotNumber))
{
break;
}
}
UpdateWeaponIcon((byte)slotNumber);
SavePick((byte)slotNumber);
}
private bool WeaponAvailabilityCheck(byte slotNumber)
{
return PlayerPrefs.GetInt(weaponAvailabilityKeysNames[weaponSlots[slotNumber]]) == 1;
}
private void SavePick(byte slotNumber)
{
PlayerPrefs.SetInt(weaponKeys[slotNumber], weaponSlots[slotNumber]);
PlayerPrefs.Save();
}
private void UpdateWeaponIcon(byte slotNumber)
{
weaponIcons[slotNumber].sprite = weaponSprites[weaponSlots[slotNumber]];
weaponIcons[slotNumber].SetNativeSize();
}
}
4 months ago
Само изящество
Next up
)
Добавил настройки. У кого-то есть идеи что можно добавить или изменить?
Ядерка-2
Оцените
no pain no gain
Разработка:
ВырубилXD
Лучше бы не вырубал)
don't forget the main thing. xx.07.25_
Добавил звуки. Как вам?
5 comments