Unity - C# - 将GameObject附加到公共Button CommunicationButton;

时间:2016-11-18 11:41:36

标签: c# unity3d nullreferenceexception gameobject

我无法解决这个问题,希望有人知道怎么做。

我有什么

画布上的按钮和文本字段,请参见图像:

enter image description here

我有一个名为HumanInstructions的脚本,它初始化如下:

public Text CommunicationMessage;
public Button CommunicationButton;

现在我可以通过在下拉菜单中选择按钮/文本字段来在检查器中分配相应的GameObject。

我想要的,是通过脚本选择GameObject。文本字段名为CrazyMsg,按钮名为CommunicationButton。所以我想要这样的东西:

public override void OnAwake ()
{
    CommunicationMessage = GameObject.find("CrazyMsg");
    CommunicationButton = GameObject.find("CommunicationButton");
}

它不起作用。救命啊!

1 个答案:

答案 0 :(得分:0)

GameObject.Find不是GameObject.find。您还需要在找到GameObject后获取Component。

public Text CommunicationMessage;
public Button CommunicationButton;

void Start()
{
    CommunicationMessage = GameObject.Find("CrazyMsg").GetComponent<Text>();
    CommunicationButton = GameObject.Find("CommunicationButton").GetComponent<Button>();

    //Register Button Click
     CommunicationButton.onClick.AddListener(() => buttonClickCallBack());
}

//Will be called when CommunicationButton Button is clicked!
void buttonClickCallBack()
{
   CommunicationMessage.text = ....
}

您还可以使用CommunicationButton.onClick.AddListener(delegate { buttonClickCallBack(); });CommunicationButton.onClick.AddListener(buttonClickCallBack);

来设置注册按钮