@crowcs

Почему метод не возвращает значение?

Сюда надо вернуть значение
void Attack(int Damage, int EXP) 
    {
        //Attack anim

        Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);

        foreach(Collider2D enemy in hitEnemies)
        {
            enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP);
            Debug.Log(EXP);
        }
    }


От сюда должно вернуться значение
public int TakeDamage(int damage, int EXP)
    {
        currentHealth -= damage;

        //Anim hurt

        if(currentHealth <= 0)
        {
            EXP += 1;
            Debug.Log(EXP);
            Die();
        }
        return EXP;
    }

    void Die()
    {
        Debug.Log($"Enemy died");
        //Die anim
    }
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Ты никак не используешь возвращаемое значение.
enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP)


Видимо тебе нужно чтото типа:
var exp = enemy.GetComponent<Enemy>().TakeDamage(Damage, EXP);
Debug.Log(exp);


Чтобы в будущем таких конфузов не случалось - изучай C# как самодостаточный язык, а не как "скрипты для юнити"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы