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


23

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


Это если у вас есть 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 #


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, так что это было бы здорово!
Оливер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.