Понимаю, что тема избитая и изжеванная, но без примера никак не могу понять.
Есть несколько префабов со скриптом. Например, при соприкосновении с префабом нужно увеличить счет в игре (выбиваем очки из объекта, арканоид там, или вроде того).
На префабе
Синтаксис:
Используется csharp
public class blockBehaviour : MonoBehaviour {
GameControll gameControll;
private void OnCollisionEnter(Collision collision)
{
gameControll = new GameControll();
gameControll.Score(10f);
}
}
GameControll gameControll;
private void OnCollisionEnter(Collision collision)
{
gameControll = new GameControll();
gameControll.Score(10f);
}
}
то есть, при соприкосновении вызываем счетчик счета со значением 10 (на 10 увеличивается общий счет)
И есть сам объект gameControll с кодом
Синтаксис:
Используется csharp
public class GameControll : MonoBehaviour {
public float scoreText;
public Text scoreObj;
public void Score(float scoreNum)
{
scoreText += scoreNum;
scoreObj.text = scoreText.ToString();
}
}
public float scoreText;
public Text scoreObj;
public void Score(float scoreNum)
{
scoreText += scoreNum;
scoreObj.text = scoreText.ToString();
}
}
где этот счет считается и выводится в текстовый ui.
Но данные код вызывает ошибку
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()
и
NullReferenceException: Object reference not set to an instance of an object
GameControll.Score (Single scoreNum)
почему вдруг нельзя вызывать new и почему объект не задан в score, хотя в инспекторе назначен?