O Unity usa uma versão diferente do C # ou é tudo a mesma coisa? Parece diferente do C # regular, mas existem alguns elementos C # regulares lá.
O Unity usa uma versão diferente do C # ou é tudo a mesma coisa? Parece diferente do C # regular, mas existem alguns elementos C # regulares lá.
Respostas:
Conforme declarado em outras respostas, o Unity 4.x usa uma versão modificada do Mono com base no Mono 2.6
Na maioria das vezes, isso é compatível com o .Net 2.0 , embora eu não tenha conseguido rastrear uma lista de compatibilidade específica do Mono 2.6.
Parece diferente do C # regular, mas existem alguns elementos C # regulares lá.
Como mencionado em um dos comentários sobre sua pergunta, isso provavelmente se deve à API de script específica do Unity, e não à própria linguagem.
Como exemplo, muitos códigos em projetos típicos do Unity estão contidos nas subclasses de uma classe chamada MonoBehavior. Esses são os componentes descartados no GameObjects no ambiente do Unity Editor. Essa arquitetura leva ao código C # que parece diferente do código C # típico (pelo menos para mim) de várias maneiras:
Na prática, o maior recurso de linguagem C # que sinto falta na versão C # atual do Unity é o suporte a palavras-chave assíncronas e relacionadas e funcionalidade. Um conceito semelhante no Unity são as rotinas . Eles são executados no encadeamento principal, portanto não são assíncronos verdadeiros, mas permitem que códigos de execução longa sejam divididos em vários quadros. O multithreading de nível inferior ainda é suportado.
asyncem C # também não é assíncrono verdadeiro como em multiencadeados - ele também roda no encadeamento principal. As maiores diferenças, de uma perspectiva de uso, entre corotinas e assíncronas são os horários em que o código é executado.
O Unity 4 usa o Mono 2.6 , que é uma implementação completa da estrutura .NET, incluindo a linguagem C #.
Não sei ao certo como parece diferente, mas lembre-se de que o Unity suporta vários idiomas, todos os quais funcionam com o mesmo tempo de execução Mono. É possível que você esteja confundindo C # com UnityScript ?
O Unity usa C # regular.
Então, novamente, quando você escreve C # no Unity, estará usando muitas bibliotecas, mas, tanto quanto eu sei, tudo o que é possível em C # é possível no Unity, exceto as diferenças listadas abaixo:
Áreas mais específicas do .Net relacionadas ao Windows Forms e ASP estão fora dos limites através do Unity.
Embora você possa usar o Visual Studio para erros de edição e tempo de compilação, é necessário criar e executar no Unity IDE.
O Unity usa o Mono, que é uma implementação de código aberto do .Net, o que significa que existem pequenas diferenças.
A questão de saber se a versão C # usada pelo Unity é diferente de um C # "regular" foi respondida por outras postagens. Como você está solicitando explicitamente certos elementos que podem diferir de uma versão regular, compartilharei a única diferença menor que notei ao comparar o C # que uso no trabalho (por exemplo, o C # 4.0 no Visual Studio 2010 e posterior) e o C # no Unity, que é que não posso usar valores padrão para parâmetros nas definições de função. ou seja, você precisa configurar seu projeto com mais cuidado para usar uma versão mais recente do C #. Veja este link para mais explicações.
Edit: Deixo esta resposta, pois, tanto quanto sei, é um mal-entendido que acontece com muitas pessoas.