前提・実現したいこと
以前、相談させていただいた内容ですが、AssetStore『DynamicRightClickMenu』を使って検討しております。
オブジェクトを選択したときに、赤くオブジェクトが代わり、そのときに右クリックを押すとこのオブジェクト専用のメニューが表示します。
オブジェクトが非選択時(どこにも赤いオブジェクトがないとき)、右クリックを全体メニューを表示します。
発生している問題・エラーメッセージ
オブジェクトに赤色がないときを探してから、全体メニューを表示させてます。
その際、空のGameObjectもしくはアセンブリとして以下のように構成した場合、全体メニューが表示されてこない問題に直面しております。
該当のソースコード
右クリックを押したとき
C#
1private bool isRed;//オフジェクトクリックかぶり防止用。赤色認識 2 3void Update() 4 { 5 if(Input.GetMouseButtonDown(1)) 6 { 7 //オブジェクト選択(赤色)がないときに、右クリックメニューが出される 8 isRed =false; 9 foreach(Transform child in ParentModel) 10 { 11 if(child.GetComponent<Renderer>().material.color == Color.red) 12 { 13 isRed = true; 14 break; 15 } 16 } 17 if(!isRed)//子オブジェクトに赤がないとき 18 { 19 ContextMenu.HideAllMenus();//他のオブジェクトメニューを隠す 20 mainMenu.ShowAtMousePosition();// 全体メニューの表示 21 } 22 } 23
実現したいこと
マテリアルが割り当てられてない空オブジェクト(MeshFilterなし)もしくはアセンブリ用に使われているGambeObjectをスルーして、右クリック全体メニューが表示されるようにしたいです。
###追記(2020年9月8日)
わかりにくい質問で申し訳ございません。GameObjectの中にMeshFilterがあるかどうかをスクリプトで認識させたいです。
C#
1 if(!isRed)//子オブジェクトに赤がないとき 2 && ?????//『GameObject内にMeshFilterがないとき』という条件を入れたい 3 { 4 ContextMenu.HideAllMenus();//他のオブジェクトメニューを隠す 5 mainMenu.ShowAtMousePosition();// 全体メニューの表示 6 }
でうまく動くのかなと思っています。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/09 02:24