我可以在其他地方发送OnMouseDown()事件吗?

时间:2014-10-11 05:55:33

标签: c# unity3d gameobject

我正试图制作一个非常简单的记忆游戏(即,牌桌,玩家一次翻两次,试图找到一个匹配)。我格式化它的方式是我将卡片附加到卡片上,并附加到板上的脚本可以容纳所有卡片,发送信息以便旋转,在匹配时清除,等等。但是,我遇到了麻烦。我在CardScript中使用void OnMouseDown()知道它应该何时翻转,但我不知道如何让董事会意识到这已经发生了。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

对象之间的通信所需要的只是一个参考。要获得参考,您通常只需保留一个这样的变量:

 MyScript reference = new MyScript();

然而,由于您无法在MonoBehaviours上使用new,因此无法在Unity中使用。所以你需要另一种方式。

你找到了参考!你可以用这个:

 MyScript reference = GameObject.Find("GameObjectName").GetComponent<MyScript>();

一旦你有参考,只需进行函数调用。

reference.foo();

答案 1 :(得分:-1)

基本上你需要跨脚本发送消息。这就是你要做的事情:

Script1.cs

public void checky()
{
  print("you touched my card");
}

<强> Script2.cs

private Script1 otherScript; // we need Script1
void OnMouseDown()
{
  otherScript = new Script1(); // new instance of Script1
  otherScript.checky(); // accessing public method of Script1
}

希望这会有所帮助:)