using System.Collections.Generic; using System.Linq; using Unity.VisualScripting; using UnityEngine; /// /// менеджер тайлов /// инициализация, создание новых, удаление, отслеживание кол-ва тайлов /// public class TileManagerScript : MonoBehaviour { /// /// число тайлов, которые будут созданы /// [SerializeField] private int _NumTile; /// /// номер текущего тайла /// public int CurrentTile; // [SerializeField] private float _DistanceTiles; [SerializeField] private List _TilesPref = new List(); /// /// поле массива тайлов /// private List _Tiles; // при запуске сцены, создание новых тайлов private void Awake() { Debug.Log($"NumTile = {_NumTile}"); // создание массива _Tiles = new List(_NumTile); Debug.Log($"_Tiles = {_Tiles.Count}"); // запихивание в массив тайлов null, чтобы понимать, что там пусто for (int i = 0; i < _Tiles.Count; i++) { _Tiles[i] = null; } Debug.Log($"_Tiles = {_Tiles.Count}"); float z = (_NumTile/2) * _DistanceTiles; Debug.Log($"z = {z}"); // создание тайлов назад от игрока, где i номер тайла, а z координата transfrom.position.z for (int i = 0; i < _NumTile; i++) { GenerateTile(new Vector3(0, 0, z), new Quaternion(0, 0, 0, 0)); z -= _DistanceTiles; } } /// /// Генератор тайлов с собственным положением /// /// /// /// public void GenerateTile(Vector3 pos, Quaternion rot) { Instantiate(_TilesPref[0], pos, rot); } /// /// Генератор тайлов за последним /// public void GenerateTile() { Vector3 pos = _Tiles.Last().transform.position; Quaternion rot = _Tiles.Last().transform.rotation; Vector3 newVector = new Vector3(pos.x, pos.y, pos.z + _DistanceTiles); Instantiate(_TilesPref[0], new Vector3(), rot); DeleteTile(); } /// /// Удалитель тайлов /// /// public void DeleteTile() { Destroy(_Tiles[0]); _Tiles.RemoveAt(0); //GenerateTile(); } void Start() { } // Update is called once per frame void Update() { } }