É possível usar C ++ com Unity em vez de C #?


Respostas:


23

É possível usar o C ++ com a versão gratuita do Unity, embora seja mais fácil trabalhar se você tiver uma licença do Unity Pro. Tudo o que você precisa fazer é agrupá-lo em uma DLL e siga as instruções abaixo sobre onde colocá-lo.

Eu escrevi um artigo que aborda este tópico: Unidade e DLLs: C # (gerenciado) e C ++ (não gerenciado)

Para o Unity 4 Free:

  • Adicione código não gerenciado à raiz do projeto Unity: UnityProject
  • Adicione código gerenciado à pasta Plugins: UnityProject->Plugins
  • Ao criar um projeto, copie o código não gerenciado para BuildRoot-> Data->Plugins

Para o Unity 4 Pro e qualquer Unity 5:

  • Basta copiar as DLLs em UnityProject->Plugins

Não gerenciado significa C ++ e Gerenciado significa C #


1
Isso mudou para o Unity 5, onde a versão gratuita contém todos os recursos de mecanismo da versão pro?
GeekyMonkey 31/03/2019

1
@GeekyMonkey Atualizou o artigo e a resposta.
MLM

Não faz sentido tentar substituir C # por C ++ no contexto do Unity3D. Essa resposta pode ser útil se for solicitada a interface com o código nativo.
aggsol

1
Com a nova tecnologia IL2C ++, não há muitos motivos para usar C ++ em vez de C #. No momento, ele está limitado a plataformas móveis, mas espera que a tecnologia esteja disponível em breve no PC.
JPtheK9

1
@ user2023370 I atualizado que parte para tornar a linguagem mais clara "Unity 4 e abaixo", obrigado pelo comentário :)
MLM

1

É possível, porém inconveniente. Você precisaria escrever C ++ gerenciado para alcançá-lo. E sim, existe C ++ gerenciado. Gerenciado não significa especificamente C # e C ++ não gerenciado. Para alcançá-lo, você precisará importar o arquivo DLL do UnityEngine. Quando terminar, coloque-o na pasta (Nome do projeto da Unity) / Plugins. Aqui estaria o código que você usaria: No arquivo C ++:

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

};

No arquivo C #:

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

Esse código exato não funcionaria, mas isso é uma base.


O tempo de execução mono usado no Unity finalmente suporta assemblies de modo misto? Não tivemos sorte há alguns anos, no dia 4 e nas assembléias do VS 2012, então isso seria realmente ótimo!
Oliver
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.