• Как повернуть объект, чтобы своей верхней частью он указывал на другой объект?

    AGlassOfWhiskey
    @AGlassOfWhiskey
    Unity Game Developer (c#)
    Как вариант использовать метод LookAt от Unity. Но, он позволит смотреть лицом смотреть на обьект, где лицо находится по оси X. Исправляется это следующим образом ...
    Используем основной(родительский) объект как оболочку, в него кладем нужный нам объект который становится дочерним. Кладем родительский объект в инспекторе в _listener. Так как метод предостовляет возможность смотреть по Оси Х, то переворачиваем дочерний обьект в нужный угол, что бы его верх находился по Оси Х родительского.

    [SerializeField] private GameObject _listener;
        [SerializeField] private GameObject _riecever;
    
        void Update()
        {
            _listener.transform.LookAt(_riecever.transform);
        }
    Ответ написан
    Комментировать
  • Как сделать задержку после паузы?

    AGlassOfWhiskey
    @AGlassOfWhiskey
    Unity Game Developer (c#)
    Решением данной задачи предлагаю использовать Корутину.
    Каждая итерация держит секунду, до определенной границы времени timerAfterPause.
    При нажатии на клавишу "A" начнется отсчет.

    private const int timerAfterPause = 5;
    
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.A))
                StartCoroutine(StartWaitAfterPause(timerAfterPause));
        }
    
        IEnumerator StartWaitAfterPause(int value)
        {      
            int iterator = 0;
    
            while (iterator < value)
            {
                Debug.Log(value - iterator);
                yield return new WaitForSeconds(1f);
                iterator++;
            }
            EndWaitAfterPause();
        }
    
        void EndWaitAfterPause()
        {
            StopCoroutine("WaitAfterPause");
            Debug.Log("GO!");
        }
    Ответ написан
    Комментировать
  • Как сохранить данные в один бинарный файл?

    AGlassOfWhiskey
    @AGlassOfWhiskey
    Unity Game Developer (c#)
    В рамках данной задачи предлагаю использовать Newtonsoft.
    Установить пакет можно через NuGet в вижле.

    class Program
        {
            const string pathData = @"c:\data.dat";
            static void Main(string[] args)
            {
                WriteData(GenerateData());
                DisplayListData(ReadData());
                Console.ReadLine();
            }
    
            static List<Cell> GenerateData()
            {
                List<Cell> dataCell = new List<Cell>();
                for (int i = 1; i <= 5; i++)
                {
                    int val = i * 10;
                    Cell cell = new Cell()
                    {
                        neighbors = new List<int>() {val, val + 1, val + 2},
                        index = i
                    };
                    dataCell.Add(cell);
                }
                return dataCell;
            }
    
            static void WriteData(List<Cell> dataCell)
            {
                using (StreamWriter file = File.CreateText(pathData))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    serializer.Serialize(file, dataCell);
                }
                Console.WriteLine("Save Data in PATH: " + pathData);
            }
    
            static List<Cell> ReadData()
            {
                using (StreamReader file = File.OpenText(pathData))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    return (List<Cell>) serializer.Deserialize(file, typeof(List<Cell>));
                }
            }
    
            static void DisplayListData(List<Cell> dataList)
            {
                Console.WriteLine(new String('-', 5));
                foreach (var cell in dataList)
                {
                    Console.WriteLine("Cell index: " + cell.index);
                    Console.WriteLine(new String('-', 5));
                    for (int i = 0; i < cell.neighbors.Count; i++)
                    {
                        Console.WriteLine("Value index: " + i + " = " + cell.neighbors[i].ToString());
                    }
                    Console.WriteLine(new String('-', 5));
                }
            }
        }
    
        [Serializable]
        public class Cell
        {
            public List<int> neighbors { get; set; }
            public int index { get; set; }
        }


    Думаю общий принцип понятен.
    Ответ написан
    Комментировать