完整的警告信息:
您正尝试使用
MonoBehaviour
关键字创建new
。这是不允许的。MonoBehaviours
只能使用AddComponent()
添加。或者,您的脚本可以继承ScriptableObject
或根本不继承基类
在这两个脚本中,我没有使用new
关键字:
DetectPlayer
脚本:
public class DetectPlayer : MonoBehaviour
{
private int counter = 0;
private void OnGUI()
{
GUI.Box(new Rect(300, 300, 200, 20),
"Times lift moved up and down " + counter);
}
}
Lift
脚本:
public class Lift : MonoBehaviour
{
private bool pressedButton = false;
private DetectPlayer dp = new DetectPlayer();
private void OnGUI()
{
if (pressedButton)
GUI.Box(new Rect(300, 300, 200, 20), "Press to use lift!");
}
}
答案 0 :(得分:8)
最好不要将MonoBehaviours视为传统意义上的C#对象。他们应该被认为是他们自己独特的东西。它们在技术上是Unity所基于的实体组件系统架构的“组件”部分。
因此,MonoBehaviour是一个组件,如果没有GameObject就不能存在。因此,仅使用“new”关键字创建MonoBehaviour不起作用。要创建MonoBehaviour,必须在GameObject上使用AddComponent。
除此之外,您无法在类范围内创建新的GameObject。一旦游戏开始,它必须在一个方法中完成,这样做的理想场所是Awake。
你想做的是
item.getText().toString()
quantity.getText().toString()