C#の代わりにUnityでC ++を使用することは可能ですか?


23

タイトルの種類はそれをすべて言います。Unityを使用するゲームでC#をC ++に置き換えることは可能ですか?


Proエディションをお持ちの場合です。詳細については、docs.unity3d.com
Manual

回答:


23

Unity Proのライセンスをお持ちの方が作業しやすいですが、Unityの無料版でC ++を使用することは可能です。あなたがしなければならないのは、それをDLLでラップし、それをどこに置くかについて以下の指示に従ってください。

このトピックをカバーする記事を書きました:UnityとDLL:C#(管理)とC ++(非管理)

Unity 4無料の場合:

  • Unityプロジェクトルートにアンマネージコードを追加します。 UnityProject
  • マネージコードをPluginsフォルダーに追加します。- UnityProject>Plugins
  • プロジェクトをビルドするときに、アンマネージコードをBuildRoot-> Data-> にコピーしますPlugins

Unity 4 ProおよびUnity 5の場合:

  • DLLをUnityProject->にコピーするだけですPlugins

非管理はC ++を意味し、管理はC#を意味します


1
無料版にプロ版のすべてのエンジン機能が含まれるUnity 5では、これが変更されましたか?
-GeekyMonkey

1
@GeekyMonkey記事と回答を更新しました。
MLM

Unity3DコンテキストでC#をC ++に置き換えようとしても意味がありません。この回答は、ネイティブコードとのインターフェイスが要求された場合に役立ちます。
aggsol

1
新しいIL2C ++テクノロジーでは、C#の代わりにC ++を使用する理由はあまりありません。現時点では、モバイルプラットフォームに限定されていますが、すぐにPCで利用できるようになる予定です。
-JPtheK9

1
@ user2023370言語をより明確にするためにその部分を更新しました。「Unity 4以下」、コメントのおかげで:)
MLM

1

不便ではありますが可能です。それを実現するには、マネージC ++を作成する必要があります。そして、はい、マネージドC ++などがあります。マネージドとは、特にC#とアンマネージドC ++を意味するものではありません。それを実現するには、UnityEngine DLLファイルをインポートする必要があります。完了したら、(Unity Project Name)/ 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で使用されるモノラルランタイムは最終的に混合モードアセンブリをサポートしますか?VS 2012の4およびアセンブリで数年前に運がなかったので、これは本当に素晴らしいことです!
オリバー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.