Чи можна використовувати C ++ з Unity замість C #?


23

Назва заголовку говорить все це. Чи можна замінити C # на C ++ у грі за допомогою Unity?


Це якщо у вас є Pro видання. Для отримання додаткової інформації дивіться: docs.unity3d.com/Manual/Plugins.html
Ascendion

Відповіді:


23

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

Я написав статтю, яка охоплює цю тему: Єдність та DLL: C # (керований) та C ++ (некерований)

Для Єдності 4 безкоштовно:

  • Додайте некерований код до кореня проекту Unity: UnityProject
  • Додайте керований код до папки плагінів: UnityProject->Plugins
  • Створюючи проект, скопіюйте некерований код у BuildRoot-> Data->Plugins

Для Unity 4 Pro та будь-якого Unity 5:

  • Просто скопіюйте DLL-файли в UnityProject->Plugins

Некерований означає C ++, а керований означає C #


1
Чи змінилося це для Unity 5, де безкоштовна версія містить усі функції двигуна професійної версії?
GeekyMonkey

1
@GeekyMonkey Оновлено статтю та відповідь.
MLM

Немає сенсу намагатися замінити C # на C ++ у контексті Unity3D. Ця відповідь може бути корисною, якщо попросили взаємодія з нативним кодом.
аґґсол

1
З новою технологією IL2C ++, не так багато причин використовувати C ++ замість C #. Наразі він обмежений мобільними платформами, але очікує, що технологія незабаром стане доступною на ПК.
JPtheK9

1
@ user2023370 Я оновив цю частину, щоб зробити мову зрозумілішою "Єдність 4 і нижче", дякую за коментар :)
MLM

1

Це можливо хоч і незручно. Вам потрібно буде написати керований C ++, щоб досягти цього. І так, є така річ, як керований C ++. Керований не означає конкретно C # та некерований C ++. Для цього вам потрібно імпортувати файл DLL UnityEngine. Закінчивши, ви помістите його в папку (Назва проекту Unity) / Плагіни. Тут буде код, який ви використовуєте: У файлі 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.