質問編集履歴

2

分かりにくいですがdoの中身とデバックの結果を追記しました。

2020/10/25 13:07

投稿

Tomo0225
Tomo0225

スコア67

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,21 @@
2
2
 
3
3
  do{
4
4
 
5
+ targetplayer = originallist[UnityEngine.Random.Range(0,originallist.Count)];
6
+
7
+ debugcount++;
8
+
9
+ Debug.Log("targetplayer"+targetplayer.PlayerName+" attacker "+attacker.PlayerName);
10
+
11
+ Debug.Log(targetplayer.Team+""+targetplayer.isLive+" "+attacker.Team+attacker.isLive);
12
+
13
+ if(debugcount > 50){
14
+
15
+ Debug.Log("無限ループ");
16
+
5
- ・・・
17
+ break;
18
+
19
+ }
6
20
 
7
21
  }while((targetplayer.isLive == false) || (targetplayer.Team == attacker.Team))
8
22
 
@@ -13,3 +27,11 @@
13
27
  do while文で上記のような条件式を書いたのですが、targetplayer.isLive == trueで且つtargetplayer.Team != attacker.Teamのような条件の時でもwhile文から抜けずループしてしまうことがあります。
14
28
 
15
29
  条件式の書き方でおかしいところがあるでしょうか?。
30
+
31
+
32
+
33
+ デバッグで確認したときの画像です。![イメージ説明](2a4d5b2299c0e5351f0b337f226461be.jpeg)
34
+
35
+
36
+
37
+ 分かりにくいですがdoの中身とデバックの結果を追記しました。

1

カッコの数が間違っていたので編集しました

2020/10/25 13:07

投稿

Tomo0225
Tomo0225

スコア67

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ・・・
6
6
 
7
- }while((targetplayer.isLive == false) || (targetplayer.Team == attacker.Team)
7
+ }while((targetplayer.isLive == false) || (targetplayer.Team == attacker.Team))
8
8
 
9
9
  ```
10
10