Создание экземпляра класса на Юнити
Добавлено: 18 мар 2020, 16:09
Создал такой класс:
Его экземпляр
После чего Юнити выдало такую ошибку:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
User:.ctor() (at Assets/NewBehaviourScript.cs:17)
NewBehaviourScript:Update() (at Assets/NewBehaviourScript.cs:49)
В инете нашел что можно исправить таким способом:
Но если так, то я не могу заполнять поля.
Вопрос, можно ли использовать new для создание экземпляра, чтобы юнька не жаловалась. И если нет какие решения есть? Понимаю что объяснил не внятно, но я не знаю как еще это сделать
Синтаксис:
Используется csharp
public class User : MonoBehaviour
{
public int topicNumber;
public int questionNumber;
public User(int topic = 1, int question = 1)
{
topicNumber = topic;
questionNumber = question;
}
public User()
{
topicNumber = 1;
questionNumber = 1;
}
public void GetInfo()
{
Debug.Log("Тема: " + topicNumber + ", Завдання: " + questionNumber);
}
}
{
public int topicNumber;
public int questionNumber;
public User(int topic = 1, int question = 1)
{
topicNumber = topic;
questionNumber = question;
}
public User()
{
topicNumber = 1;
questionNumber = 1;
}
public void GetInfo()
{
Debug.Log("Тема: " + topicNumber + ", Завдання: " + questionNumber);
}
}
Его экземпляр
Синтаксис:
Используется csharp
User CurrentTask = new User()
После чего Юнити выдало такую ошибку:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
User:.ctor() (at Assets/NewBehaviourScript.cs:17)
NewBehaviourScript:Update() (at Assets/NewBehaviourScript.cs:49)
В инете нашел что можно исправить таким способом:
Синтаксис:
Используется csharp
this.gameObject.AddComponent<User>();
User CurrentTask = this.gameObject.GetComponent<User>();
User CurrentTask = this.gameObject.GetComponent<User>();
Но если так, то я не могу заполнять поля.
Вопрос, можно ли использовать new для создание экземпляра, чтобы юнька не жаловалась. И если нет какие решения есть? Понимаю что объяснил не внятно, но я не знаю как еще это сделать