[Unity]Detecta quando um elemento da interface do usuário é clicado.

この記事は約3分で読めます。
スポンサーリンク

Coisas que eu quero fazer

Este código detecta quando um elemento da interface do usuário (mais precisamente, um GameObject com um componente RectTransform) é clicado no Unity.

Normalmente, você simplesmente herdaria de Button, mas quando isso não é possível (por exemplo, quando você precisa passar o evento para o rodapé), você precisa detectar quando um clique ocorreu.

スポンサーリンク

implementação

Utilize a seguinte função.

bool RectangleContémPontoDaTela (RectTransform rect, Vector2 screenPoint, Camera cam);

Esta função verifica se o ponto da tela (screenPoint) está dentro do retângulo. Se estiver, retorna verdadeiro.

Ao realizar testes na interface do usuário, não é necessário configurar a câmera.

Exemplo específico

Abaixo, é apresentado um exemplo de implementação.

A classe herda de MonoBehaviour e realiza a validação em objetos cujo nome filho é ‘GameObjectName’.

if (Input.GetMouseButtonUp(0)) {
    var obj = tramsform.Find("GameObjectName");
    if (RectTransformUtility.RectangleContainsScreenPoint(obj.GetComponent<RectTransform>(), Input.mousePosition))
    { 
            Debug.Log ("GameObject is clicked");
    }
}
スポンサーリンク

Sites que utilizei como referência

RectTransformUtility-RectangleContainsScreenPoint - Unity スクリプトリファレンス
RectTransform は指定されたカメラから見たスクリーンポイントを含むか。

コメント

タイトルとURLをコピーしました