【Unity】UIのオブジェクトを選択した時、ワールド座標上のオブジェクトを選択できないようにする
例えば、マウスでUIオブジェクトをクリックしたとき、Input.MouseDown()メソッドも実行できてしまう
UIだけ操作したいので困る!
Rayを使った処理など、ゲームオブジェクトの情報を得るコードが実装されているケースでは、そのコードは有効となり、ポーズ画面なのに、オブジェクトの移動などができてしまいます。その場合、次のようなコードで対応しましょう
必要なusing
using UnityEngine.EventSystems;
追加コード
UIのところにカーソルがあると以降のコードを実行しない
// 追加:UI選択中は、以降のコードは実行しない
if (EventSystem.current.IsPointerOverGameObject())
{
return;
}
// 次のようなコードの前に追加します
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
}
IsPointerOverGameObject(): EventSystem.currentオブジェクトが提供するメソッドの1つで、現在のポインター(通常はマウスカーソル)がどのUI要素上にあるかを確認します。つまり、ポインターがUI要素上にある場合、このメソッドはtrueを返し、それ以外の場合はfalseを返します。
ディスカッション
コメント一覧
まだ、コメントがありません