Unity C# The script class can't be abstract

Рейтинг: 0Ответов: 1Опубликовано: 20.03.2023

Столкнулся с проблемой, не дающей использовать скрипт на игроке. Прогуглив проблему, понял, что юнити буквально не понимает, что именно я хочу использовать : интерфейс или класс. К решению так и не пришел, не понимаю ничего в абстрактных классах и interface.введите сюда описание изображения

public interface IInteractable 
{
void Interact();
string GetDescription();
}



public class PlayerInteraction : MonoBehaviour {

public Camera mainCam;
public float interactionDistance = 2f;

public GameObject interactionUI;
public TextMeshProUGUI interactionText;

private void Update() {
    InteractionRay();
}
//...

Источник : код и видеоролик

Ответы

▲ 0Принят

Вы пытаетесь добавить к объекту не скрипт, а интерфейс, что не является реализацией. Вместо того чтобы добавлять к объекту IInteractable.cs, создайте новый скрипт {Ваше название скрипта}.cs и унаследуйте его от IInteractable:

public class YourScript : MonoBehaviour, IInteractable
{
    public void Interact()
    {
       // Ваш код...
    }
    public string GetDescription() => "Ваше описание";
}

Далее просто перетащите файл {Ваше название скрипта}.cs в инспектор и получите резултьтат.