Невозможно вызвать общедоступный статический метод в другом скрипте единстваC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно вызвать общедоступный статический метод в другом скрипте единства

Сообщение Anonymous »

У меня есть два спрайта «врага», которые при соприкосновении со спрайтом «игрока» должны нанести урон.

Скрипт PlayerStatus просто содержит информацию о здоровье игрока. .
Когда запускается метод EnemyAIController OnTriggerEnter2D, я хотел вызвать метод в скрипте PlayerStatus, который уменьшил бы здоровье на величину x.

Я сделал Общедоступный метод доступа TakeDamage со статическим модификатором. Поэтому я мог бы вызвать PlayerStatus.TakeDamage(float x), но это не сработает.

Я получаю сообщение об ошибке: An для доступа к нестатическому элементу `PlayerStatus.TakeDamage(float)' требуется ссылка на объект

Я не хотел использовать findObjectByTag< /code> потому что я это читал это медленный и ленивый способ сделать это.

Я что-то упустил?

< strong>Скрипт PlayerStatus:

public class PlayerStatus : MonoBehaviour {

public float health = 3.0f;

public static void TakeDamage(float damage){
health -= damage;

}

}


Скрипт EnemyAIController:

public class EnemyAIController : MonoBehaviour {

void OnTriggerEnter2D(Collider2D other) {

Debug.Log("Reduce Player Health");
PlayerStatus.TakeDamage (1.0f);

}

}


Подробнее здесь: https://stackoverflow.com/questions/355 ... ity-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»