Есть вот такой простенький код, который устанавливает объекты на сцене. Мне необходимо, что бы каждый созданный объект, был добавлен в list<Transorm> а из этого листа последний трансформ записывался в отдельную переменную (например в отдельный трансформ или вектор) и при нажатии другой клавиши, последний трансформ из листа удалялся, перекидывая данные переменной на позицию выше. Как это можно реализовать?
private GameObject Player;
private PlayerController PlayerController;
public GameObject SpawnPoints;
private Vector3 lastEndPosition;
void Start()
{
Player = GameObject.Find("Player");
PlayerController = Player.GetComponent<PlayerController>();
}
void Update()
{
lastEndPosition = new Vector2(PlayerController.transform.position.x, PlayerController.transform.position.y);
if(Input.GetKeyDown(KeyCode.S))
{
Instantiate(SpawnPoints, lastEndPosition, Quaternion.identity);
}
}
Разобрался, вообще забил на лист трансформов, сделал всё через стак и мне кажется совсем неправильно, но это работает и работает как мне нужно))
private GameObject Player;
private PlayerController PlayerController;
[SerializeField]private GameObject SpawnObject;
private int Pos;
public Vector2 SpawnPoint;
private GameObject InstanceObj;
Stack<GameObject> Spawn = new Stack<GameObject>();
void Start()
{
Player = GameObject.Find("Player");
PlayerController = Player.GetComponent<PlayerController>();
}
void Update()
{
Pos = Spawn.Count;
if(Pos >= 1)
{
SpawnPoint = new Vector2(Spawn.Peek().transform.position.x,
Spawn.Peek().transform.position.y);
}
else
{
SpawnPoint = Vector2.zero;
}
if(Input.GetKeyDown(KeyCode.S))
{
InstanceObj = Instantiate(SpawnObject,
PlayerController.transform.position, Quaternion.identity);
InstanceObj.name = "Point " + Pos;
Spawn.Push(InstanceObj);
}
if(Input.GetKeyDown(KeyCode.R))
{
Destroy(Spawn.Pop());
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей