Ответы пользователя по тегу C#
  • Как сделать перебор строки?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Если нужно разделить по словам - можно использовать split. Он разделяет одну строку на несколько, где указынный символ (или массив char[]) будет разделителем.
    Код будет выглядеть примерно так:
    string phrase = "Когда это будет?";
    string[] words = phrase.Split(' ');
    
    Console.WriteLine(words[0]); //тут выведет Когда
    Console.WriteLine(words[1]); //тут выведет это
    Console.WriteLine(words[1]); //тут выведет будет?

    Ну и при получении можно уже обрабатывать каждое отдельное слово как захочется
    Ответ написан
    Комментировать
  • Как передавать данные через интернет (По формам C#)?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Это очень обширный вопрос, потому могу порекомендовать вот это руководство от Metanit. Оно посвящено Сетевому программированию в С# и .NET, а объясняетя достаточно понятным языком
    Ответ написан
    Комментировать
  • Как заставить работать кликер в фоновом режиме?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    В полноценных кликерах и других играх, где используется игровой процесс в "нерабочем" состоянии - либо работает механика на сервере (что на самом деле редко делают, только в случаях возможного влияния других игроков извне), либо осуществляют ускоренную симуляцию.
    Например, есть какое-то здание, которое накапливает золото с течением в ремени по формуле
    сurrency(t) = t*currencyPerSecond
    где t - время, а currencyPerSecond - количество валюты, начисляемое в секундах.
    В итоге игрок сидит и играет, каждую секунду получает по currencyPerSecond. И тут мы должны куда-то сохранять момент, в который мы последний раз получили эту валюту. Например, в 11:00 игрок получил currencyPerSecond и у него теперь 10000 золота. Мы это записали и сохранили в файл сохранения, какой-нибудь json или типа того.
    Игрок закрыл игру и открыл через пол часа, в 11:30.
    Мы пошли смотреть, когда игрок последний раз получил валюту - в 11:00, а сейчас 11:30 - значит он отсутствовал 30 минут и мы должны нагенерировать ему
    30*60*currencyPerSecond (30 минут * 60 секунд * на величину получаемого золота в секунду)

    И тут-то, если больше 0, то показываем игроку окно, что "У вас накопилось 30*60*currencyPerSecond валюты. А в сумме у вас 10000 + 30*60*currencyPerSecond".
    currencyPerSecond - может само по себе быть формулой, типа количество построенных зданий * 2 или типа того.
    Ответ написан
    Комментировать
  • Как запретить движение игрока?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Смотри, самый хороший вариант - инкапсулировать управление. В частности создать класс, который будет слушать управление у Input.GetKeyDown и хранить в себе вектор перемещения например.
    Типа сделать интерфейс IInputService, у которого есть метод Vector3 GetMoveDirection() - реализации этого метода будут брать Input.GetKey(*W/A/S/D*) (или мобильное управление) и определять куда надо двигаться.
    А для того, чтобы заблокировать/разблокировать движение игрока - реализовать IInputService.Lock / IInputService.UnLock в которых будет "лочиться управление" через переменную IsLock. И уже в каждой конкретной реализации проверять, не заблокировано ли управление.
    Что-то вроде:
    public Vector3 GetMoveDirection()
    {
      if(IsLock){
        return Vector3.zero;
      }
      //а тут уже реализовать логику определения движения персонажа
    }
    Ответ написан
    Комментировать
  • Как исправить оишбку спавнера unity?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Это ошибка возникает когда ты обращаешься к элементу, который ты ещё не создал. Т.е. к некоему экземпляру класса, который ты ещё не проинициализиировал. Так что простого ответа WHAT TO DO нет
    Ответ написан
    Комментировать
  • Как сделать отображение сцены поверх экрана блокировки в Unity?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Такого функционала в Unity по умолчанию нет. Стоит посмотреть как делаются виджеты на Kotlin/Java или Swift(для iOS) и написать такой виджет на запуск вашего приложения, а уже потом из него и запускать игру.
    Ответ написан
    Комментировать
  • Почему не срабатывает нота при нажатии на клавишу?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Потому что метод aboba. Переименуй в Update и всё должно заработать
    Ответ написан
    Комментировать
  • С чего начать новичку в изучении c# для gamedev?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Рекомендую так же Metanit.com. Всю учёбу в университете только на нём и изучал. Всё очень доходчиво объясняется и разложено по полочкам
    Ответ написан
    2 комментария
  • Как объектам массива задать разные координаты спавна?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Ну для начала стоит показать код который не работает.
    А затем просто указать куда спавнить объекты.
    Вот например рабочий пример кода:
    public GameObject[] Prefabs; //тут говорим какие префабы спавнить
    
            public void Start()
            {
                for (var index = 0; index < Prefabs.Length; index++)
                {
                    Instantiate(Prefabs[index], Vector3.one * index, Quaternion.identity); //тут говорим: какой префаб спавнить, какие координаты и какой поворот
                }
            }
    Ответ написан
    Комментировать
  • Как создать объект в объекте Unity?

    red-cat-fat
    @red-cat-fat
    Делаю игры
    Если noteTile - это ссылка на объект, который уже есть в сцене, то нужно не инстанцировать объект, а просто поменять родителя
    noteTile.transform.parent = parent.transform;
    где parent - это GameObject в который нужно поместить noteTile
    Если же noteTile не инстанциирован - то стоит сначала заинстанцировать, а уже потом задавать различные параметры.
    Ответ написан
    Комментировать