Как разделить исходный код c# между проектами Unity?


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

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

Единственным вариантом, по-видимому, является помещение кода в библиотеку классов и загрузка его в качестве плагина в каждый проект. Но я не верю, что это работает, когда ссылаются на типы Unity, такие как GameObject или transform.

В C / C++ land мы можем поместить исходный код в каталог и включить его в любое решение, которое мы хотим - кажется, это не так просто в Unity-land. Является ли их лучший способ совместного использования кода между проектами unity?

EDIT: Все проекты, включая общий код, уже находятся под управлением системы управления версиями. Это не вопрос управления версиями, это вопрос структуры. (И, очевидно, я нужно писать лучше вопросы!)

Предположим, что структура каталогов выглядит следующим образом...

C: Проект1 Активы CodeForProject1 StandardAssets Библиотека

C: Проект2 Активы CodeForProject2 Ресурсы Библиотека

D: UsefulCode PlayerClass WeaponsClass DataAccessClass

Может ли Unity ссылаться на код из других проектов? Можете ссылаться на кодекс единство за пределами собственных ресурсов? Если это так, но как?

1 4

1 ответ:

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

Идея нашего общего кода состоит в том, чтобы быть своего рода промежуточным программным обеспечением, поэтому естественно, что он будет развиваться. Нашим решением было создать модуль git для общего кода. Я знаю, что вы сказали, что это не вопрос управления версиями, но, по крайней мере, здесь, в моей компании, создание dll не было хорошим решением, так как мы постоянно меняем общий код (мы тоже пробовали софт-линки, но это было очень болезненно поддерживать во всех машинах).

Здесь мы создали два проекта: один для промежуточного ПО, а другой только для тестов. У последнего есть только gitmodule к middleware и куча модульных тестов. Мы сделали это для того, чтобы не было зависимости от других проектов. Оба находятся в системе управления версиями. Поэтому, когда кто-то хочет реализовать новую функцию внутри промежуточного программного обеспечения, он/она делает это внутри проекта тестов, и когда это сделано, фиксирует оба проекта.

О! И вы может создать dll с типами Unity и использовать их нормально.