我想做的事情
这段代码用于检测 Unity 中何时点击 UI 元素(更准确地说,是带有 RectTransform 组件的 GameObject)。
通常情况下,您只需继承 Button 即可,但当无法做到这一点时(例如,当您需要将事件传递到底部时),您需要自己检测何时发生了点击事件。
执行
请使用以下函数。
bool RectangleContainsScreenPoint (RectTransform rect, Vector2 screenPoint, Camera cam);
此函数检查屏幕点是否在矩形区域内。如果在,则返回 true。
在用户界面上进行测试时,无需配置摄像头。
具体示例
下面展示一个示例实现。
该类继承自 MonoBehaviour,并对子名称为GameObjectName的对象执行验证。
if (Input.GetMouseButtonUp(0)) {
var obj = tramsform.Find("GameObjectName");
if (RectTransformUtility.RectangleContainsScreenPoint(obj.GetComponent<RectTransform>(), Input.mousePosition))
{
Debug.Log ("GameObject is clicked");
}
}我用作参考的网站
RectTransformUtility-RectangleContainsScreenPoint - Unity スクリプトリファレンス
RectTransform は指定されたカメラから見たスクリーンポイントを含むか。


コメント