#ご相談内容
AssetStoreで購入した『Dynamic Right Click Menu』でメニューを選択する際、裏側に隠れているオブジェクトを左クリック選択してしまい、すでに用意してあるオブジェクトドラッグが起きてずれてしまう問題が生じています。
購入したAssetの中身を見る限り、ContextMenuを使っているみたいですが、このコンテキストメニューが表示されてなおかつ、選択中のときに、オブジェクトドラッグのスクリプトを無効にしたいと考えております。
##追記内容
SelectorというGameObjectを左クリックで、選択したときに裏側に隠れているオブジェクトを選択してしまうみたいです。このSelectorはメニュー表示のなかの青網掛け部分に相当します。
↓オブジェクトに重なった位置で、右クリックメニューを表示させメニュー選択したときに、裏側のオブジェクトが押されてしまう。
メージ説明](21a7cfec489003e7d201bee87411b27e.jpeg)説明](c8a4f1027f9fdc7700d45d81b5bd25b1.jpeg)ージ説明](aa3ea436097bf4c01cf0e18546a033a3.jpeg)8d665cbbc413c4ad791369a4fed91ef.jpeg)
この購入Assetの構成が複雑で、理解できてないことが多く、うまく相談できていないかもしれませんが、コンテキストメニューでのマウス左クリックかぶりの解消方法などの一般的なテクニックなどご教示いただけると幸いです。
(”コンテキストメニューが非表示の時”の条件文や別スクリプトからコンテキストメニュー状態を拾う方法など)
#####右クリックメニューのコード
予めPrefabで用意されたContextMenuを呼び出しているみたいです。
public class ExampleMenu : MonoBehaviour { public ContextMenu prefab; ContextMenu mainMenu; void Start() { mainMenu = Instantiate<GameObject>(prefab.gameObject).GetComponent<ContextMenu>();//create a new object mainMenu.transform.SetParent(transform); mainMenu.transform.localScale = Vector3.one; mainMenu.transform.localPosition = Vector3.zero; mainMenu.AddMenuItem("Clear", Clear);//show this item opens a sub menu } void Update() { if(Input.GetMouseButtonDown(1))//if right clicking { ContextMenu.HideAllMenus();//hide other menus mainMenu.ShowAtMousePosition();//show the menu } } void Clear() { Debug.Log("Cleared"); }
#####オブジェクトドラッグ コード
オブジェクトにコライダーを用意して移動。
{ Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint(this.transform.position); Vector3 mousePointInScreen = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPointInScreen.z); Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen); mousePointInWorld.z = this.transform.position.z; this.transform.position = mousePointInWorld; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 00:57
2020/06/08 01:26
2020/06/08 03:13