Можно ли использовать C ++ с Unity вместо C #?

23

Название вроде говорит само за себя. Можно ли заменить C # на C ++ в игре, использующей Unity?

DJMcMayhem
источник
Это если у вас есть Pro версия. Для получения дополнительной информации см .: docs.unity3d.com/Manual/Plugins.html
Ascendion

Ответы:

23

Можно использовать C ++ с бесплатной версией Unity, хотя с ней проще работать, если у вас есть лицензия Unity Pro. Все, что вам нужно сделать, это обернуть его в DLL и следуйте инструкциям ниже, где его разместить.

Я написал статью, которая охватывает эту тему: Unity и библиотеки DLL: C # (управляемый) и C ++ (неуправляемый)

Для Unity 4 Free:

  • Добавьте неуправляемый код в корневой каталог проекта Unity: UnityProject
  • Добавьте управляемый код в папку плагинов: UnityProject->Plugins
  • Когда вы строите проект, скопируйте неуправляемый код в BuildRoot-> Data->Plugins

Для Unity 4 Pro и любого Unity 5:

  • Просто скопируйте библиотеки в UnityProject->Plugins

Неуправляемые средства C ++ и Управляемые средства C #

MLM
источник
1
Изменилось ли это для Unity 5, где бесплатная версия содержит все функции движка для про версии?
GeekyMonkey
1
@GeekyMonkey Обновил статью и ответил.
MLM
Нет смысла пытаться заменить C # на C ++ в контексте Unity3D. Этот ответ может быть полезен, если запрашивается взаимодействие с нативным кодом.
Aggsol
1
С новой технологией IL2C ++ не так много причин использовать C ++ вместо C #. Прямо сейчас, это ограничено мобильными платформами, но ожидается, что технология скоро будет доступна на ПК.
JPtheK9
1
@ user2023370 Я обновил эту часть, чтобы сделать язык более понятным "Unity 4 и ниже", спасибо за комментарий :)
MLM
1

Это возможно, хотя неудобно. Вы должны написать управляемый C ++, чтобы достичь этого. И да, есть такая вещь, как управляемый C ++. Управляемый не означает C # и неуправляемый C ++. Для этого вам нужно импортировать файл DLL UnityEngine. Когда вы закончите, вы положите его в папку (Имя проекта Unity) / Plugins. Вот код, который вы бы использовали: В файле C ++:

public ref class CPPUNITY {
  public:
     void Start() {
         Debug::Log("C++ printed message");
     }

};

В файле C #:

     using UnityEngine;
     public class FileName {
         void Start() {
              CPPUNITY.Start();
         }
     }

Точный код не сработает, но это основа.

Пустота курица
источник
Поддерживает ли моно среда выполнения, используемая в Unity, наконец-то сборки в смешанном режиме? Несколько лет назад нам не повезло на 4 и сборках VS 2012, так что это было бы здорово!
Оливер