我可以将OnMouseDown()事件发送到其他地方吗

本文关键字:其他 方吗 事件 OnMouseDown 我可以 | 更新日期: 2023-09-27 18:26:11

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

我可以将OnMouseDown()事件发送到其他地方吗

对象之间的通信只需要一个引用。为了获得参考,你通常只保留一个这样的变量:

 MyScript reference = new MyScript();

然而,这在Unity中并不总是有效的,因为你不能在MonoBehaviours上使用new。所以你需要另一种方式。

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

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

一旦有了引用,只需调用函数即可。

reference.foo();

基本上,您需要跨脚本发送消息。这就是你必须做的:

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
}

希望这有帮助:)