Как сделать переменную non-stati c без получения ошибки ссылки на объект? (Начинающий кодер) - PullRequest
1 голос
/ 16 апреля 2020

Метод обновления в враге и здоровье требует от меня, чтобы цель стала здоровьем c, но если я сделаю это, я не смогу создавать уникальных врагов.

{
    public Text enemyHealth;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        enemyHealth.text = EnemyVitals.targetHealth.ToString();
    }
}
{
    public double targetHealth = 100;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (targetHealth <= 1)
        {
            Destroy(gameObject);
        }
    }
}

1 Ответ

1 голос
/ 16 апреля 2020

Насколько я понимаю, это: enemyHealth.text = EnemyVitals.targetHealth.ToString(); пытается получить доступ к targetHealth, как если бы вы обращались к классам c, например Vector3.up. Эти классы / методы stati c позволяют вам использовать их методы без создания экземпляра этого класса. Поэтому в вашем случае вам понадобится ссылка на экземпляр EnemyVitals и вызов .targetHealth для этого экземпляра. Например, вы можете создать его с помощью EnemyVitals enemyVit = new EnemyVitals(); или объявить поле publi c в вашем первом классе следующим образом: public EnemyVitals enemyVit;, затем в редакторе перетащите ссылку EnemyVitals на это поле. Я думаю, что вы, скорее всего, захотите получить ссылку как-то иначе в игре, например, с радиопередачей на возможные объекты противника и т. Д. c. Из того, что вы опубликовали, мне кажется, что последнее - это больше, чем вы хотели бы go за.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...