最初ですが、以下のコードを見ていただきたいです。
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)
となり、私の欲する結果となりました。
配列の要素を変数にすると、その変数には代入できないのでしょうか?
(私の感覚的な表現になってしまいますが、配列の表面上には数字がセットされ、配列内部の要素には反映されていないようです)
もしあればご教示いただければ幸いです。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/05 07:51 編集