Я хотел бы написать игру полностью на C #. В своем поиске движка я обнаружил Unity3D, но все учебные пособия и документация говорят о визуальном редакторе и Unity IDE, в которых вы щелкаете и указываете для создания сцен и сценариев.
Я не хочу этого делать. Я предпочитаю полное покрытие кода дизайнерам, абстрагирующимся от меня. Я хотел бы писать только чистый код C # с нуля или, если требуется, сценарии Unity в качестве дополнения. Я не мог найти объяснения или документации по этому поводу; Как я могу создать игру, используя Unity и минимально (или вообще не использовать) визуальный редактор?
I prefer writing my own level editor which provides only the stuff really neccessary for my game
Хорошо, это в основном означает, что вы не хотите использовать игровой движок, вы хотите программировать с графической библиотекой. Однако вы уже столкнулись с технической проблемой, пытаясь это сделать, так что ... я чувствую здесь противоречие.Ответы:
Я полный новичок в Unity, но сейчас я так и делаю, и это сводит использование редактора к минимуму:
В редакторе у меня есть только три объекта: пустой GameObject с именем «main», камера и источник света. И это только потому, что до сих пор я работаю только с одной камерой и одним источником света, поэтому так было быстрее. Позже я, наверное, их уберу, и останется только «главное».
В «Assets / MyScripts» у меня есть класс «Main», который добавляется в «основной» GameObject как поведение. Это означает, что при запуске программы создается экземпляр класса «Main» и вызывается его метод. Класс "Main" выглядит так:
В игре я динамически создаю такую среду:
Но это потому, что пока я делаю только прототип. Позже я захочу заменить кубики некоторыми приятными вещами, отредактированными в Blender. Что потребует сделать их в Blender и импортировать их в Units как «сборные». Затем я аналогичным образом создаю "сборные" из кода C #.
Если вы хотите, чтобы объект реагировал на события, такие как столкновения с другими объектами, вы можете создать экземпляр объекта и динамически добавить его в класс поведения, который является классом C #, производным от MonoBehavior. Например, если вы хотите иметь машину, вы делаете сборный автомобиль и пишете класс «CarBehavior» для его поведения в игре.
Таким образом, вы можете свести взаимодействие с редактором к минимуму, хотя, вероятно, не полностью к нулю. Теперь все зависит от того, является ли это приемлемым для вас решением.
источник
При работе с Unity вы должны выполнить некоторую работу в редакторе Unity; Это просто, как работает Unity.
Однако подавляющее большинство того, что вы делаете программистом, не происходит в редакторе Unity; файлы сценариев - это внешние текстовые файлы, написанные во внешней IDE, и как программист вы используете редактор Unity только для того, чтобы связать сценарии, которые нужно запустить, и затем нажать кнопку «Play», чтобы фактически запустить игру. Это мало чем отличается от ссылок на классы в настройках проекта, а затем от кнопки «Выполнить» в среде IDE.
Большинство других инструментов разработки игр, которые имеют центральный визуальный редактор, также ограничены и негибкой поддержкой сценариев, но Unity не страдает этим недостатком. Хотя все, что создается для Unity, в конечном итоге проходит через визуальный редактор, этот основной интерфейс включает в себя множество ссылок на проекты с пользовательским кодом, который работает в игровом движке Unity. Опытные программисты, не упускайте из виду эту среду разработки, ошибочно принимая ее за создателя игры, которая имеет ограниченные возможности программирования!
(также, похоже, книга, которую я сейчас пишу, будет для вас отличным ресурсом, поскольку она предназначена для опытных программистов)
источник
Я верю, что вы ищете Пустую Рамку Единства.
По сути, вы можете выполнять все свои программы с использованием сценариев, не прибегая к «перетаскиванию» содержимого или частым связям с визуальным редактором. Все, что вам нужно, это один GameObject в вашей сцене, который будет контейнером для всей вашей игры. Затем вы делаете все процедурно, как если бы вы использовали невизуальный редактор.
Отказ от ответственности: Хотя Futile очень ориентирован на код, неизбежно, что вам придется каким-то образом связываться с редактором Unity. Но это очень сильно уменьшается с Futile.
источник
Я хотел бы добавить сюда все хорошие ответы, особенно ответ @jhocking:
Почти все, что я нашел в Unity, имеет простой текстовый аналог в дереве папок проектов. Я непосредственно редактировал prefabs и другие gameObjects, не открывая Unity, и эти изменения были успешно обнаружены другими разработчиками после коммита.
Хотя до сегодняшнего дня я мало что знал о Futile Framework, похоже, это действительно потрясающий способ достичь всего.
В настоящее время я использую все элементы перетаскивания вместо того, чтобы основываться на сценариях, но это должно измениться, так как моя цель будет иметь процедурно сгенерированные уровни и плохих парней.
Мои два цента говорят, что в основном получают несколько нужных вам объектов в Unity, а затем полагаются на скрипты во внешнем редакторе. Вы можете сделать почти все в виде простого текста.
источник