Как я могу создать игру в Unity с минимальным использованием графического редактора или вообще без него?

24

Я хотел бы написать игру полностью на C #. В своем поиске движка я обнаружил Unity3D, но все учебные пособия и документация говорят о визуальном редакторе и Unity IDE, в которых вы щелкаете и указываете для создания сцен и сценариев.

Я не хочу этого делать. Я предпочитаю полное покрытие кода дизайнерам, абстрагирующимся от меня. Я хотел бы писать только чистый код C # с нуля или, если требуется, сценарии Unity в качестве дополнения. Я не мог найти объяснения или документации по этому поводу; Как я могу создать игру, используя Unity и минимально (или вообще не использовать) визуальный редактор?

луч
источник
1
Голосование за закрытие - это базовая рекомендация, замаскированная под вопрос об Unity.
BlueRaja - Дэнни Пфлугхофт
2
На самом деле я не уверен, согласен ли я с этим, хотя я бы не отменил закрытое голосование сообщества. Тем не менее, я отмечу, что этот вопрос специально задает вопрос о некоторых возможностях Unity: ответы, которые не касаются, могут быть удалены. Давайте не будем превращать это в не по теме вопрос, если нам не нужно, хорошо?
Джош
2
Большинство разработчиков в какой-то момент ищут визуальный редактор для проектирования своих уровней, потому что визуально позиционировать материал намного проще, чем устанавливать положение каждого маленького дудда в коде. То же самое касается редактирования / проектирования макетов GUI. ИМХО - иметь встроенный материал - огромная выгода.
Bummzack
4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameХорошо, это в основном означает, что вы не хотите использовать игровой движок, вы хотите программировать с графической библиотекой. Однако вы уже столкнулись с технической проблемой, пытаясь это сделать, так что ... я чувствую здесь противоречие.
Джоккинг
3
@jhocking Тогда наше определение игрового движка кажется совсем другим. Библиотека классов - это игровой движок, если он абстрагирует типичные игровые задачи, такие как математика камеры, звуковая система и, возможно, даже немного физики, но дизайнер не является обязательным требованием, и, по моему мнению, даже не должен использоваться ,
Рэй

Ответы:

27

Я полный новичок в Unity, но сейчас я так и делаю, и это сводит использование редактора к минимуму:

В редакторе у меня есть только три объекта: пустой GameObject с именем «main», камера и источник света. И это только потому, что до сих пор я работаю только с одной камерой и одним источником света, поэтому так было быстрее. Позже я, наверное, их уберу, и останется только «главное».

В «Assets / MyScripts» у меня есть класс «Main», который добавляется в «основной» GameObject как поведение. Это означает, что при запуске программы создается экземпляр класса «Main» и вызывается его метод. Класс "Main" выглядит так:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

В игре я динамически создаю такую ​​среду:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

Но это потому, что пока я делаю только прототип. Позже я захочу заменить кубики некоторыми приятными вещами, отредактированными в Blender. Что потребует сделать их в Blender и импортировать их в Units как «сборные». Затем я аналогичным образом создаю "сборные" из кода C #.

Если вы хотите, чтобы объект реагировал на события, такие как столкновения с другими объектами, вы можете создать экземпляр объекта и динамически добавить его в класс поведения, который является классом C #, производным от MonoBehavior. Например, если вы хотите иметь машину, вы делаете сборный автомобиль и пишете класс «CarBehavior» для его поведения в игре.

Таким образом, вы можете свести взаимодействие с редактором к минимуму, хотя, вероятно, не полностью к нулю. Теперь все зависит от того, является ли это приемлемым для вас решением.

Вильям Бур
источник
2
Я бы сказал, что это выглядит довольно ясным и убедительным ответом только для новичка в Unity :)
Ray
Благодарность! В противном случае я опытный программист, но это мой первый проект в Unity, и он далек от завершения. Я еще не использовал префабы. Могут быть некоторые осложнения, о которых я сейчас не знаю, поэтому я рекомендую принять мой совет с небольшим количеством соли. Кстати, сериализация в Unity кажется мне немного нелогичной. Мне придется изучить его глубже, и это может повлиять на некоторые дизайнерские решения.
Вильям Бур
9

При работе с Unity вы должны выполнить некоторую работу в редакторе Unity; Это просто, как работает Unity.

Однако подавляющее большинство того, что вы делаете программистом, не происходит в редакторе Unity; файлы сценариев - это внешние текстовые файлы, написанные во внешней IDE, и как программист вы используете редактор Unity только для того, чтобы связать сценарии, которые нужно запустить, и затем нажать кнопку «Play», чтобы фактически запустить игру. Это мало чем отличается от ссылок на классы в настройках проекта, а затем от кнопки «Выполнить» в среде IDE.

Большинство других инструментов разработки игр, которые имеют центральный визуальный редактор, также ограничены и негибкой поддержкой сценариев, но Unity не страдает этим недостатком. Хотя все, что создается для Unity, в конечном итоге проходит через визуальный редактор, этот основной интерфейс включает в себя множество ссылок на проекты с пользовательским кодом, который работает в игровом движке Unity. Опытные программисты, не упускайте из виду эту среду разработки, ошибочно принимая ее за создателя игры, которая имеет ограниченные возможности программирования!

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

jhocking
источник
1
был в середине чтения вашей книги, когда я наткнулся на этот ответ
Макс Pleaner
6

Я верю, что вы ищете Пустую Рамку Единства.

По сути, вы можете выполнять все свои программы с использованием сценариев, не прибегая к «перетаскиванию» содержимого или частым связям с визуальным редактором. Все, что вам нужно, это один GameObject в вашей сцене, который будет контейнером для всей вашей игры. Затем вы делаете все процедурно, как если бы вы использовали невизуальный редактор.

Отказ от ответственности: Хотя Futile очень ориентирован на код, неизбежно, что вам придется каким-то образом связываться с редактором Unity. Но это очень сильно уменьшается с Futile.

midasmax
источник
2

Я хотел бы добавить сюда все хорошие ответы, особенно ответ @jhocking:

Почти все, что я нашел в Unity, имеет простой текстовый аналог в дереве папок проектов. Я непосредственно редактировал prefabs и другие gameObjects, не открывая Unity, и эти изменения были успешно обнаружены другими разработчиками после коммита.

Хотя до сегодняшнего дня я мало что знал о Futile Framework, похоже, это действительно потрясающий способ достичь всего.

В настоящее время я использую все элементы перетаскивания вместо того, чтобы основываться на сценариях, но это должно измениться, так как моя цель будет иметь процедурно сгенерированные уровни и плохих парней.

Мои два цента говорят, что в основном получают несколько нужных вам объектов в Unity, а затем полагаются на скрипты во внешнем редакторе. Вы можете сделать почти все в виде простого текста.

vulpineblazeyt
источник