Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить ошибку Unity умоляю

Арсений Жигалов Ученик (73), на голосовании 5 месяцев назад
что делать с ошибкой
Assets\Scripts\Quests.(cs13,7): error CS0111: Type "Quests" already defines a member called 'OnTriggerEnter2D' with the same parameter types
public class Quests : MonoBehaviour
{
public int questNumber;
public int[] items;
public GameObject[] clouds;
public GameObject barrier;
public GameObject key;

public void OnTriggerEnter2D(Collider2D other)
{
if(other.tag != "Player" && other.gameObject.GetComponent<Pickup>().id == items[questNumber])
{
questNumber++;
Destroy(other.gameObject);
}
}
}
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264195) 6 месяцев назад
повторно определен метод OnTriggerEnter2D.
Арсений ЖигаловУченик (73) 6 месяцев назад
как убрать эту ошибку?
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264195) Арсений Жигалов, откуда я знаю что ты там наследуешь
Mr. Miller Мастер (1127) 6 месяцев назад
Ошибка CS0111 указывает на то, что в вашем классе Quests уже существует метод OnTriggerEnter2D с теми же параметрами, что и тот, который вы пытаетесь добавить. Это может произойти, если метод был определен дважды в том же классе или если он наследуется от базового класса, который уже имеет метод с таким же именем и параметрами.

Чтобы решить эту проблему, выполните следующие шаги:

  1. Проверьте класс Quests: Убедитесь, что метод OnTriggerEnter2D определен только один раз в классе.
  2. Проверьте наследование: Если класс Quests наследуется от другого класса, который уже имеет метод OnTriggerEnter2D, вам нужно либо изменить название метода в классе Quests, либо использовать ключевое слово new для явного скрытия родительского метода (если это предполагается логикой вашей программы).
  3. Проверьте другие скрипты: Если у вас есть другие скрипты, которые могут быть прикреплены к тому же объекту, что и скрипт Quests, убедитесь, что они не определяют метод OnTriggerEnter2D.

Вот пример, как использовать ключевое слово new для скрытия родительского метода:
 public new void OnTriggerEnter2D(Collider2D other) 
{
// Ваш код
}
Используйте это решение только в том случае, если вы уверены, что родительский метод не должен вызываться вместо метода в классе Quests. Если вы хотите, чтобы оба метода выполнялись, вам нужно будет вызвать родительский метод внутри переопределенного метода с помощью base.OnTriggerEnter2D(other).
Похожие вопросы