Vector3の配列の要素の変数に代入しようとしても上手くいきません。

最初ですが、以下のコードを見ていただきたいです。

C#

1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4 5public class sample : MonoBehaviour 6{7 public GameObject card1;8 9 void Start()10 {11 card1 = GameObject.Find("card1");12 Transform card1_tr = card1.transform;13 Vector3 card1_pos = card1_tr.position;14 15 Vector3[] pos_array = {card1_pos};16 for(int i = 1; i <= 1; i ++)17 {18 pos_array[i - 1] = new Vector3(0, 0, 0);19 }20 Debug.Log(card1_pos);21 Debug.Log(pos_array[0]);22 card1_tr.position = card1_pos;23 }24}

のようなコードを書きました。オブジェクトはちゃんと取得できてます。
(※本来はcard1からcard10まであるのですが、簡単のためにcard1だけにしました。for文もiが1から1までの不格好な感じですが、気にしないでください。)

上記コードの結果、コンソールには
(10, 10, 0)
(0, 0, 0)
となりました。(10, 10, 0)はオブジェクトの初期座標です。

Vector3型の配列pos_array[]の要素に代入しようとしているのですが、なぜかできません。

ちなみに、(15~21行目付近を以下のように変える)

C#

1Vector3[] pos_array = {card1_pos};2pos_array[0] = new Vector3(0, 0, 0);3Debug.Log(card1_pos);4Debug.Log(pos_array[0]);

と、for文を使用しなくても、コンソールは同じ結果になりました。

また、

C#

1Vector3[] pos_array = {card1_pos};2card1_pos = new Vector3(0, 0, 0);3Debug.Log(card1_pos);4Debug.Log(pos_array[0]);

と直接代入すると、コンソールは
(0, 0, 0)
(0, 0, 0)
となり、私の欲する結果となりました。

配列の要素を変数にすると、その変数には代入できないのでしょうか?
(私の感覚的な表現になってしまいますが、配列の表面上には数字がセットされ、配列内部の要素には反映されていないようです)

もしあればご教示いただければ幸いです。
よろしくお願いします。

コメントを投稿

0 コメント