私はタワー防衛ゲームを統一しています。 C#で書く。そして私は、マップに沿って移動するためにウェイポイントアレイを使用しているgameObject Enemyを持っています。私は敵のオブジェクトを数回生成し、別々のクラスで宣言された同じウェイポイント配列を使って移動します。私は新しいプライベートウェイポイント1を敵クラスの内側に配置すると宣言したと思った。敵はwaypoint1の配列を使用し始めます。そして、彼らはそうした。しかし今、彼らは敵のクラスに属し、すべてが同じクラスのものであるため、同じwaypoints1配列を使用しています。では、敵クラスのメンバーごとにユニークな配列を宣言するにはどうすればよいですか?同じクラスの各オブジェクトのカスタム配列
public class ONE : MonoBehaviour {
public GameObject[] waypoints;
...
}
public class TWO : MonoBehaviour {
public GameObject[] waypoints;
...
void Start() {
for (int i = 1; i < waypoints.Length; i++)
{
waypoints[i].transform.position = new Vector3(waypoints[i].transform.position.x + Random.Range(-3, 3), waypoints[i].transform.position.y + Random.Range(-3, 3), 0);
}
}
クラス1、クラス2つのオブジェクトの数倍を生成しますし、私は、各クラス2つのオブジェクトは、固有のウェイポイントの配列を持っていると思います。
私はこの
public class ONE : MonoBehaviour {
public GameObject[] waypoints;
...
}
public class TWO : MonoBehaviour {
public GameObject[] waypoints;
private GameObject[] waypoints1;
...
void Start() {
waypoints1=waypoints;
for (int i = 1; i < waypoints.Length; i++)
{
waypoints1[i].transform.position = new Vector3(waypoints[i].transform.position.x + Random.Range(-3, 3), waypoints[i].transform.position.y + Random.Range(-3, 3), 0);
}
}
を試みた。しかし、それは助けにはなりません。クラス2の各インスタンスは、同じWaypoints1配列を持ちます。私は新しいオブジェクトを生成するたびに更新しています。
静的でないプロパティ/フィールドである限り、各オブジェクトは独自の配列インスタンスを持ちます(どのように割り当てるかによって異なります)。いくつかのコードを投稿できますか? – Charleh
おそらく、コンストラクタで渡したのと同じ配列インスタンスを「再利用している」でしょう。新しいウェイポイントを作成するたびに、新しいアレイを作成する必要があります。 _(これは配列が参照型であるためです)_コンストラクタに配列のコピーを作成できます。あなたがコードを添付していないので、これは野生の推測です。 –
ウェイポイント配列は、Public GameObject []ウェイポイントのように宣言されています。 – David