私はC#に少し慣れていないので、奇妙な問題を抱えています。何が起こっているのかというと、リストに追加しているすべての値が重複していて、リストにオブジェクトを追加するたびに次の行でそのオブジェクトを再初期化するため、その理由がわかりません...これが私のコードです:
waves=new List<EnemyWave>();
EnemyWave cur_wave=null;
for (int i=1; i<lines.Length; i++){
string[] point_b=lines[i].Split("\t"[0]);
if (point_b[0].StartsWith("[WAVE ")){
string wave_data=point_b[0].Replace("[WAVE ","");
int data=System.Convert.ToInt32(wave_data.Remove(wave_data.Length-1));
if (cur_wave==null){
cur_wave=new EnemyWave(data);
path.addPoint(System.Convert.ToInt32(point_a[0]),System.Convert.ToInt32(point_a[1]));
} else {
waves.Add(cur_wave);
cur_wave=new EnemyWave(data);
}
} else {
if (cur_wave==null){
createPath(point_a,point_b,i);
point_a=point_b;
} else {
string type=point_b[0].ToLower();
int wait_time=0;
if (point_b.Length>1 && !point_b[1].Equals("")){
wait_time=System.Convert.ToInt32(point_b[1]);
}
cur_wave.addEnemyData(type,wait_time);
}
}
}
waves.Add(cur_wave);
ここで重要なのはwaves
andcur_wave
であり、ご覧のとおり、 に追加cur_wave
した後waves
、それを再初期化します。では、他に何が複製を作っているのでしょうか? 行の前後とwaves.Add(cur_wave); cur_wave=new EnemyWave(data);
最初のデバッグでデバッグ コードを配置したため、位置の項目は0
正しく取得されますが、2 番目のデバッグ コードでは、位置の項目0
がクリアされています...
編集
Unity 4.2.2f1 を使用していることを忘れていました。ここに私のデバッグコードがあります:
[...]
if (point_b[0].StartsWith("[WAVE ")){
string wave_data=point_b[0].Replace("[WAVE ","");
int data=System.Convert.ToInt32(wave_data.Remove(wave_data.Length-1));
if (cur_wave==null){
cur_wave=new EnemyWave(data);
path.addPoint(System.Convert.ToInt32(point_a[0]),System.Convert.ToInt32(point_a[1]));
} else {
if (waves.Count>0){
foreach (EnemyData en_data in waves[0].getArrayEnemyData()){
Debug.Log (en_data.getType());
}
}
if(!waves.Contains(cur_wave))
waves.Add(cur_wave);
cur_wave=new EnemyWave(data);
if (waves.Count>0){
foreach (EnemyData en_data in waves[0].getArrayEnemyData()){
Debug.Log (en_data.getType());
}
}
}
} else {
[...]
ファイルの内容は次のとおりです。
-320 240
-220 40
220 60
320 -240
[WAVE 1000]
Weak
Weak 500
Weak 500
Weak 1000
[WAVE 1000]
Weak
Weak 500
Weak 500
[WAVE 1000]
Medium
Medium 500
両方のデバッグで次のように出力されます。
weak
weak
weak
weak
しかし、私weak
はあまりうまくいかず、最初のデバッグでしか得られません... 2番目のものは何も出力していません...何が問題なのですか?