我可以将OnMouseDown()事件发送到其他地方吗
本文关键字:其他 方吗 事件 OnMouseDown 我可以 | 更新日期: 2023-09-27 18:26:11
我正在尝试制作一个非常简单的统一记忆游戏(即,牌桌,玩家一次翻两张牌,试图找到匹配的牌)。我格式化它的方式是,我在卡片上附加了一个CardScript,在装有所有卡片的板上附加了另一个脚本,它可以发送信息进行旋转,在匹配时清除,等等。然而,我遇到了一个障碍。我在CardScript中使用void 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
}
希望这有帮助:)