Задать вопрос
Ответы пользователя по тегу Unity
  • Достаточно ли изучить синтаксис C# для создания игры на Unity?

    Программировать бы по пути ещё научиться, а потом ещё нужно будет в самом юнити разбираться.
    Помни, что знать синтаксис языка и уметь программировать - это два практически независящих друг от друга навыка.
    Так что я бы ещё посоветовал кроме метанита ещё пройти курс по программированию на C# на ulearn.me - всегда его рекомендую.

    Разрешаю пропустить вообще весь учебник - судя по тому, какие тут вопросы задают, люди вполне делают игры на юнити вообще ничего не изучая и не читая.

    Если неиронично, то вполне можно пропустить 20 и 24 главу оттуда, и то и то даже в промышленной разработке сейчас практически не используется, а в юнити не используется вообще.

    Если у тебя цель в принципе делать игры и Unity это будет или какой-то другой движок тебе не принципиально, то я бы посоветовал тебе взять godot.
    Это попросили добавить в текст ответа

    ну как по мне если я смог написать бэк на Джанго, телеграм бота и еще пару скриптов для тренировки, то можно сказать "умею программировать на базовом уровне".


    Совсем не факт.
    То что ты описываешь, можешь сделать даже нейросеть, тк перечисленные задачи уже много раз обсасывались разными людьми и в интернете есть много примеров. Всегда можно сделать "по аналогии".

    Для меня "умею программировать" значит несколько иное:
    1. Нужно понимать, из каких составных частей строится любой алгоритм.
    2. Нужно понимать, как эти составные части выглядят в нужном языке и уметь из одного делать другое.
    3. Иметь хотя бы базовое понимание современного language design, понимать семантику языков, системы типов, понимать поток выполнения.
    Хотя бы поверхностно понимать, что делает компилятор.
    Понимать разницу между синхронным, асинхронным, и параллельным.
    4. И менее абстрактное - понимать, как происходит работа с памятью.

    Конкретно про юнити и c# точно нужно знать:
    1. Синтаксис, чтобы не пытаться объявить переменную в теле класса и не пытаться T запихнуть в переменную.

    2. Терминологию и ООП, чтобы не задавать вопросы вида "как прочитать переменную из другого файла" или "как вызвать метод из другого скрипта"

    3. Понимать фичи, которые используются в юнити: разницу между классами и структурами (чтобы понимать, почему DOTS и Burst именно такие, какие есть), понимать области видимости (и в рамках методов и в рамках классов), yield, sync/await, систему типов.

    В общем абсолютно точно нужно прочитать главы 1-13, 17, 18, 19, 21-24.

    Очень желательно 14-16 (так как всё
    ещё существует UniTask и какие-то вещи возможно ты захочешь вынести в отдельные потоки, которые не привязаны к физике или графике).
    Также они тебе понадобятся, если ты будешь делать свой сервер для чего-нибудь.

    Ради модов еще раз надо будет прочитать 19 и 25.

    27 - очень желательно, чтобы понимать, почему в разных примерах код разный и не писать в старом стиле.

    В конце читай 26 главу, оно тебе пригодится, когда будешь делать что-то не на юнити.

    Ну и не привязывайся жестко к юнити. Если будешь делать сетевые многопользовательские игры, то тогда тебе всё равно придется полностью всё прочитать. (Да и даже если игра однопользовательская, то возможно ты захочешь сделать покупки внутри игры, синхронизацию сохранений, сбор статистики, или загрузку какого-нибудь контента через интернет. Тогда тебе тоже захочется сделать свой сервер)

    Повторюсь: единственное, что точно не стоит читать никому - это глава про Dynamic Language Runtime.

    Бтв метанит сам по себе очень ужатый. В нём всё ещё не рассматриваются вопросы:
    1. Тестирования
    2. Работы с dotnet CLI
    3. Опций компилятора
    4. Nuget
    5. Структуры проекта
    6. Best practice
    Ответ написан
  • Как можно тестировать код уже в собранном приложении unity?

    Тебе нужно добавить в свою игру такую возможность.
    Хоть консоль, хоть панель, хоть специальные уровни.
    Ответ написан
    Комментировать
  • Как сделать физику в игре про вертолёты?

    Моделировать воздух как газ в игре - это конечно сильно. Пойдёт, если ты собираешься на суперкомпьютере NASA играть)

    Если нацеливаешься на что-то более массовое - нужно моделировать что-то более абстрактное и приближённое, типа гравитации/тяги/сопротивления воздуха.

    Из атмосферы тебе важно только давление, температура и влажность (они будут влиять на обороты ротора, сопротивление воздуха, и то как из оборотов получается тяга)

    А от самого вертолёта/самолёта тебе нужно:
    1. Центр масс (и сама масса. Меняется при расходе топлива)
    2. Центр давления (меняется при управлении, изменении управляющих плоскостей)
    3. Вектор тяги (Зависит от оборотов ротора, атмосферы, шага лопастей.)

    А ну и ещё вращение

    Более подробно - нужно читать руководства (вероятно даже на конкретный аппарат) и учить физику.
    Чем более реалистичный тебе нужен полёт, тем больше разных взаимодействий придётся рассчитывать.
    Ответ написан
    Комментировать
  • Как Хауди Хо экспортировал анимацию из MagicaVoxel воксельного объекта и использовал в игре?

    И если так - то чтобы также импортнуть анимацию такого динозаврика в Unity, то нужно, допустим, сохранить всех динозавриков с их разными ногами в .obj, импортнуть и настроить их переключение для создания анимации?

    Да.
    Проще - только если эту работу на себя возьмёт какой-то плагин
    Ответ написан
    Комментировать
  • Как переменную string преобразовать в List в C#?

    var str = "a b c";
    var list = str.Split(' ').ToList();

    А вот почему юнити зависает - надо смотреть на код целиком.
    То что написано в вопросе не является валидным C#-кодом в принципе.
    Ответ написан
    Комментировать
  • Почему рекомендуется использовать private а не просто ставить везде Public?

    Если без шибко умных слов, то приватными поля нужно делать, чтобы код отображал намерения разработчика и чтобы скрывать детали реализации (польза второго менее очевидна).

    Вот пример из комментариев о том, как делать не стоит:
    class Character {
      public double health;
      public void TakeDamage(double damage) {
        if(damage <= 0) return;
        this.health -= damage;
        if(this.health <= 0) {
           this.Die();
        }
        // ...
      }
      public void Die() {
        this.DoSomethingSpecial();
        // ...
      }
      
      // Этот метод в будущем будет удалён, оставлен пока как костыль
      public void DoSomethingSpecial() {/*...*/}
    }


    Потом спустя хз сколько времени ты вернулся к коду.
    Как ты будешь вспоминать, как правильно стоит наносить урон персонажам?
    Через TakeDamage или в каких-то случаях можно напрямую изменить поле health?
    Если в каких-то случаях нужно напрямую использовать поле health, то в каких?
    Если ошибёшься - возникнут закономерные баги.

    Про скрытие деталей реализации:
    Допустим, что ты решил добавить в игру поддержку модов.
    Как разработчик мода поймёт, какие методы на персонажах можно вызывать не беспокоясь о том, что мод сломается в следующей версии игры?
    Например без использования модификатора internal - разработчик мода может подумать, что этот метод можно вызывать, а по факту - в следующей версии ты, как разработчик игры, планируешь его удалить или изменить сигнатуру, что поломает мод.
    + если у тебя многие вещи сделаны через поля, то тогда ты не сможешь использовать интерфейсы (ну или их использование будет затруднено)
    Ответ написан
    Комментировать
  • Что хранится в системной папке игры apk?

    Библиотеки, которые используются игрой и Unity
    Ответ написан
    3 комментария
  • Какие минимальные системные требования нужны для комфортного пользования Юнити?

    Адекватная видеокарта, i5, 16gb, SSD - это комфортный минимум
    Можно меньше, но тогда будет некоторое количество мучений.
    Ответ написан
    Комментировать
  • Что может быть если вырезать в бесплатной версии экран загрузки юнити?

    Отследить можно и вот как:
    1. Ты разработал и собрал приложение, вырезав заставку.

    2. Ты публикуешь её где-нибудь в steam или другой площадке

    3. Представитель Unity видит эту игру, видит тебя как разработчика, видит, что игра сделана на юнити и нет заставки.

    4. Представитель юнити проверяет, зарегистрирован ли ты в их системе и куплена ли у тебя Pro или другая версия, которая разрешает убирать заставку

    5. Представитель юнити видит, что соответствующей лицензии у тебя нет.

    Далее уже на усмотрение юнити. В случае обращения в суд - твою вину легко будет доказать, как и ущерб.

    На практике скажу, что нет никакого смысла убирать эту заставку - хорошей игре она не навредит, а плохую игру хорошей не сделает.
    Ответ написан
    8 комментариев
  • Почему unreal engine сложнее unity?

    1. Он гораздо требовательнее к железу разработчика.

    2. На одних готовых ассетах хорошую игру не сделаешь. В юнити маркетплейсе тоже можно готовых ассетов накупить.

    3. На одном только блупринте ничего сложного ты нормально не сделаешь
    Ответ написан
    Комментировать
  • Что лучше использовать для создания мультиплеера в Unity?

    Кажется, тебе для начала базу про сети нужно почитать.
    А дальше про сетевое программирование (есть даже книги, которые рассматривают применительно к играм).
    А можно сразу взять какой-нибудь photon и страдать
    Ответ написан
  • Какое движение в движке лучше использовать и почему?

    Является ли телепорт transform'а неправильным способом передвижения таких противников?

    Зависит от желаемого результата. В некоторых случай можно и трансформ, в каких-то лучше через физику (импульс), а в каких-то можно и скорость/ускорение трогать.

    Стоит ли вообще двигать противников через физику, и зачем это нужно?

    Очевидно - если хочется добиться результата, который не противоречит физике, то лучше через физику.
    Ответ написан
    Комментировать
  • С какой версии unity можно убрать заставку Made With unity?

    Нужно иметь подписку Unity Pro и выше.
    Ответ написан
    Комментировать
  • На каком уровне нужно знать c# для начала разработки на Unity?

    Нужно, чтобы ты умел в сам C#, BCL и умел читать ошибки, о которых тебе пишет компилятор.
    Понимать различие между полем и свойством.
    Абстрактным классом и интерфейсом.
    Зачем нужен static.
    Отличие значимых и ссылочных типов.
    Как работает yield.

    Винформы, впф и асп трогать не нужно
    Ответ написан
  • Как правильно двигать персонажа в 3д?

    Кажется, что если тебе не подходит addForce, то манипулируй скоростью напрямую.
    Ответ написан
    Комментировать
  • Почему в данном случае возникает ошибка: CS1503 Аргумент 1: не удается преобразовать из "UnityEngine. Quaternion" в "UnityEngine.Vector3"?

    ты пытаешься передать квартернион туда, где ожидается вектор.
    Ответ написан
    Комментировать
  • Как хранить часто используемые большие объемы данных в игре?

    В файлах
    Ответ написан
    Комментировать
  • Как сделать так, что бы параметр velocity не влиял на силу гравитации?

    Гравитация влияет на скорость => если ты сам меняешь скорость, то гравитация будет пропадать.
    Либо используй AddForce, либо меняй только горизонтальную скорость (через операции с векторами - вспоминай школьную математику)
    Ответ написан