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 は指定されたカメラから見たスクリーンポイントを含むか。


コメント