Поскольку ваша переменная life
равна static
, это будет одно и то же значение, которое вы редактируете при каждом вызове ChangeLife
для GameObject
.
Поскольку методы расширения должны принадлежать до static
классов, а класс static
может иметь только static
членов, вы не можете достичь желаемой цели с помощью методов расширения.
Даже если бы вы могли, это не правильный путь к go с парадигмой Единства. При такой настройке вы, по сути, говорите: «Каждый GameObject
в моей сцене имеет значение life
», что, я думаю, вы не хотите делать.
Вместо этого вы можете создавать свои собственные компоненты. , как показано ниже.
public class Enemy : MonoBehaviour
{
[SerializeField] private int _initialHealth = 100;
private int _health = -1;
public int health { get { return _health; } }
private void Awake()
{
_health = _initialHealth;
}
public void IncrementHealth(int health)
{
_health += health;
}
}
Это всего лишь пример, но вы можете сделать что-то, чтобы удовлетворить ваши потребности.