是否可以在Unity中使用C ++而不是C#?


Answers:


23

可以将C ++与免费版本的Unity一起使用,尽管如果您拥有Unity Pro许可证,则使用起来更容易。您所要做的就是将其包装在DLL中,并按照下面的说明进行放置。

我写了一篇涵盖该主题的文章:Unity和DLL:C#(托管)和C ++(非托管)

对于Unity 4 Free:

  • 将非托管代码添加到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 2015年

在Unity3D上下文中尝试用C ++替换C#没有任何意义。如果要求与本机代码接口,则此答案可能会有所帮助。
aggsol

1
使用新的IL2C ++技术,没有太多理由使用C ++代替C#。目前,它仅限于移动平台,但希望该技术很快可以在PC上使用。
JPtheK9 2015年

1
@ user2023370我更新了该部分,使语言更清晰“ Unity 4及以下”,感谢您的评论:)
MLM 2015年

1

尽管不方便,但这是可能的。您必须编写托管C ++才能实现它。是的,有托管C ++之类的东西。托管并不是专门指C#和非托管C ++。要实现它,您需要导入UnityEngine DLL文件。完成后,将其放在(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中使用的mono运行时最终是否支持混合模式程序集?几年前,我们在VS 2012上的4和程序集上还没有走运,所以这真是太好了!
奥利弗·
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.