teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

要件ミスにつき修正

2020/05/26 08:11

投稿

sakura_hana
sakura_hana

スコア11429

answer CHANGED
@@ -11,12 +11,16 @@
11
11
  foreachを使って子をチェックする書き方だとこんな感じ。
12
12
  ```C#
13
13
  if(Input.GetMouseButtonDown(1)) {
14
+ bool isRed;
14
15
  foreach(Transform child in ParentModel) {
15
16
  if (child.GetComponent<Renderer>().material.color == Color.red) {
16
- // メニュー開く処理
17
+ isRed = true;
17
18
  break;
18
19
  }
19
20
  }
21
+ if (!isRed) {
22
+ //メニューを開く処理
23
+ }
20
24
  }
21
25
  ```
22
26
  foreachの使用は最小限にしたいので右クリック時の処理に入れてしまっていますが、

2

コメントを受けて追記

2020/05/26 08:11

投稿

sakura_hana
sakura_hana

スコア11429

answer CHANGED
@@ -4,4 +4,21 @@
4
4
 
5
5
  (ただこれだと後のメンテナンス性が低いので、bool型変数を作り、オブジェクト選択時に切り替えて
6
6
  `if(Input.GetMouseButtonDown(1) && !isSelecting)`
7
- などとした方がいいかなと思います/変数名は適当)
7
+ などとした方がいいかなと思います/変数名は適当)
8
+
9
+ ---
10
+
11
+ foreachを使って子をチェックする書き方だとこんな感じ。
12
+ ```C#
13
+ if(Input.GetMouseButtonDown(1)) {
14
+ foreach(Transform child in ParentModel) {
15
+ if (child.GetComponent<Renderer>().material.color == Color.red) {
16
+ // メニュー開く処理
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ ```
22
+ foreachの使用は最小限にしたいので右クリック時の処理に入れてしまっていますが、
23
+ これ見て分かる通りやっぱり煩雑なので選択中フラグ(bool変数)を用意した方がいいと思います。
24
+ (もう少し慣れたら「Linq」というものを調べてみると多少は楽になるかもしれません。多少ですが)

1

誤字修正

2020/05/26 02:44

投稿

sakura_hana
sakura_hana

スコア11429

answer CHANGED
@@ -4,4 +4,4 @@
4
4
 
5
5
  (ただこれだと後のメンテナンス性が低いので、bool型変数を作り、オブジェクト選択時に切り替えて
6
6
  `if(Input.GetMouseButtonDown(1) && !isSelecting)`
7
- ようにした方がいいかなと思います/変数名は適当)
7
+ などとした方がいいかなと思います/変数名は適当)