У меня есть скрипт оружия, там есть переменные: Ammo, ExtraAmmo, ClipAmmo. Они отвечают за количество патрон в обойме,дополнительные патроны и максимальное количество патрон в обойме. Есть метод FireData где проверяется, если патрон в обойме 0, то начать перезарядку, но я не могу писать как оружие должно перезаряжаться, потому что я не знаю какое число в этих трех переменных. Я занес их в качестве параметров, но как вызвать это в Invoke? Есть способ лучше?
using UnityEngine;
public class Pistol : MonoBehaviour
{
public int Ammo;
public int ExtraAmmo;
public int ClipAmmo;
public float RateOfFire;
public float ReloadTime;
public float Damage;
[Space]
public bool CanFire;
public void Update()
{
if(Input.GetButtonDown("Fire"))
{
Fire();
FireData();
}
}
public void Fire()
{
}
public void FireData()
{
Ammo--;
if(Ammo == 0 && ExtraAmmo != 0)
{
GunManager.StatsUI.text = "Reloading...";
Invoke(GunManager.Reloading(ref Ammo,ref ExtraAmmo,ref ClipAmmo), ReloadTime); // Нужно string,а у меня void
}
else
{
GunManager.StatsUI.text = "You dont\nhave ammo.";
}
}
}
using UnityEngine;
using UnityEngine.UI;
public static class GunManager
{
public static Text StatsUI;
public static GameObject FirstGun;
public static GameObject SecondGun;
public static void Reloading(ref int Ammo, ref int ExtraAmmo, ref int ClipAmmo)
{
if(ClipAmmo <= ExtraAmmo)
{
ExtraAmmo -= ClipAmmo;
Ammo = ClipAmmo;
}else
{
Ammo = ExtraAmmo;
ExtraAmmo = 0;
}
}
}