Unity使用中にぶつかりました。
シンプルに配列同士の加算代入で、代入先の配列以外の数値が変わってしまいます。
基本的なミスかもしれませんがよろしくおねがいします。
例としては下記のような単純な計算でArrayAの中身が変わってしまいます。
ArrayC[0] = ArrayA[0] + ArrayB[0];
配列はすべてInt[]です。
実際のコードになります、デバッグ用のログも一様残しておきます。
このコードをオブジェクトに付けループさせています、変数は一番上のスコープで宣言し使いまわしています。
TmpPos、MoveTmpPosを実行するたびにnewで初期化した場合は発生しませんが、newを避ける目的で改修しています。
private void Moveing() { TmpPos[0] = 0;//固定 TmpPos[1] = SetMoveNumber();//1,2の要素に0,1,-1のどれかを取得します。 TmpPos[2] = SetMoveNumber(); Debug.Log(gameObject); Debug.Log("現在座標_" + Pos[0] + "_" + Pos[1] + "_" + Pos[2]); Debug.Log("差分座標_" + TmpPos[0] + "_" + TmpPos[1] + "_" + TmpPos[2]); Array.Clear(MoveTmpPos, 0, MoveTmpPos.Length); MoveTmpPos[1] += Pos[1];//やMoveTmpPos[1] = Pos[1] + Pos[2] MoveTmpPos[2] += Pos[2]; MoveTmpPos[1] += TmpPos[1]; MoveTmpPos[2] += TmpPos[2]; Debug.Log("計算後行き先_" + MoveTmpPos[0] + "_" + MoveTmpPos[1] + "_" + MoveTmpPos[2]); Debug.Log("現在座標_" + Pos[0] + "_" + Pos[1] + "_" + Pos[2]);//◆ここで数値が変わってしまいます。 _Director.Move(Pos, MoveTmpPos, gameObject);//移動させる処理です、この中でPosは変更されています。 Debug.Log("移動処理後_" + Pos[0] + "_" + Pos[1] + "_" + Pos[2]); }
回答1件
あなたの回答
tips
プレビュー