如何在任何对象上使用 OnMouseDown w/o Unity 中附加的脚本?
How do you use OnMouseDown on any object w/o a script attached in Unity?
假设:您有一个名为 "InputManager" 的空游戏对象,它附加了一个脚本,该脚本在单击对象时利用 OnMouseDown 函数 return 对象上的数据。
问题:OnMouseDown 函数仅适用于带有脚本的对象,该脚本包含附加到它们的函数。
问题:如何调整 OnMouseDown 仅作用于脚本附加到函数调用的对象的限制? (注意:我试图避免将脚本添加到场景中的每个对象)
您可以尝试使用 Raycast 来检测所有带有 Colliders 的 GameObject。
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
它将return所有被击中的对象,然后将它们作为简单的游戏对象使用。然后你可以用
给他们发消息
https://docs.unity3d.com/ScriptReference/Component.SendMessage.html
不使用脚本组件。
它会是这样的:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
hit.collider.gameObject.SendMessage("BeingMouseClicked");
}
"BeingMouseClicked" 字符串只是示例方法名称。
假设:您有一个名为 "InputManager" 的空游戏对象,它附加了一个脚本,该脚本在单击对象时利用 OnMouseDown 函数 return 对象上的数据。
问题:OnMouseDown 函数仅适用于带有脚本的对象,该脚本包含附加到它们的函数。
问题:如何调整 OnMouseDown 仅作用于脚本附加到函数调用的对象的限制? (注意:我试图避免将脚本添加到场景中的每个对象)
您可以尝试使用 Raycast 来检测所有带有 Colliders 的 GameObject。
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
它将return所有被击中的对象,然后将它们作为简单的游戏对象使用。然后你可以用
给他们发消息https://docs.unity3d.com/ScriptReference/Component.SendMessage.html
不使用脚本组件。
它会是这样的:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
hit.collider.gameObject.SendMessage("BeingMouseClicked");
}
"BeingMouseClicked" 字符串只是示例方法名称。