Além das diferenças óbvias de linguagem, como o UnityScript e o C # diferem ao desenvolver jogos no Unity3D?
- Existe uma diferença notável de desempenho?
- O código do UnityScript está empacotado como está? Se sim, isso ajuda na modabilidade do jogo?
- É possível usar bibliotecas desenvolvidas para um idioma enquanto desenvolvem no outro?
- Os dois idiomas podem ser misturados no mesmo projeto do Unity; codificando algumas partes em C # e outras no UnityScript?
unity
c#
performance
unityscript
Kostas
fonte
fonte
Respostas:
Existe uma diferença notável de desempenho?
Não. Tecnicamente, há uma diferença de desempenho muito pequena , mas não é significativa o suficiente para basear sua escolha de idioma na maioria dos casos.
É possível usar bibliotecas desenvolvidas para um idioma enquanto desenvolvem no outro?
Sim. Desde que você mantenha a estrutura de pastas recomendada pelo desenvolvedor da biblioteca, essa biblioteca poderá ser acessada de qualquer idioma. Isso tem a ver com a ordem de compilação do Unity . Alguns recursos dos IDEs, como o preenchimento automático, podem não funcionar para a biblioteca escolhida. (EDIT: isso pode ser corrigido usando o plug-in gratuito UnityVS for Visual Studio.)
É possível misturar os dois idiomas no mesmo projeto do Unity, codificando algumas partes em C # e outras em Javascript?
Mais uma vez sim. Porém, fica complicado rapidamente, pois você precisa garantir que tudo seja compilado na ordem certa. Embora seja tecnicamente possível, recomendo que você escolha um idioma e continue com ele.
Qual idioma possui melhores recursos específicos para desenvolvedores de jogos disponíveis (livros, sites, fóruns)?
Difícil de dizer. Ao navegar nos fóruns, eu diria que o Javascript tem mais tutoriais e exemplos de código. O código geralmente é bastante fácil de portar para o outro idioma, e como as bibliotecas são utilizáveis em vários idiomas, isso provavelmente não será um problema importante.
fonte
A primeira pergunta que todos os desenvolvedores iniciantes do Unity têm é C # ou JS. Sempre vá com c #.
Agora, agora você pode estar pensando: "Mas não quero aprender C # e já sei um pouco de JavaScript".
Mas a coisa enganosa que você precisa considerar é que o Unity JavaScript não é JavaScript. É um verniz superficial da sintaxe do ECMA sobre o .NET CLR. Ele não faz nenhuma das coisas legais que o JavaScript faz como gabinetes anônimos e as funções referenciam da maneira que você usaria normalmente. Ele tem suas próprias matrizes que não correspondem às matrizes .net normais e você encontrará muitas armadilhas e limitações que você poderia evitar usando o C #. O Unity JavaScript é apenas uma camada de sintaxe revestida de doces projetada para fazer o .NET parecer menos intimidador, nada mais. Isso fará mais mal do que bem.
fonte
Primeiro, eu recomendaria C # sobre JavaScript para programar no Unity por dois motivos principais. A primeira razão se resume à diferença de digitação forte / fraca que você meio que dispensou. Acho que a digitação forte funciona melhor do que a digitação fraca em um nível conceitual, mas, francamente, esse é um grande argumento que as pessoas têm e, portanto, vou me concentrar mais em uma questão prática específica: implantação no iOS (e possivelmente em outras plataformas também, mas esse é o apenas um que eu tenho certeza) requer digitação estática. O Unity até tem uma diretiva "#pragma strict" que pode forçar a digitação estática no JavaScript por esse motivo, mas isso apenas me leva ao meu segundo motivo ...
Em segundo lugar, o JavaScript no Unity não é totalmente o mesmo que o JavaScript em um navegador. Isso cria problemas quando você tenta aplicar conhecimento de fora do Unity (ou seja, a maioria dos recursos sobre JavaScript) à programação no Unity. É por isso que muitos desenvolvedores do Unity se referem à linguagem como UnityScript.
Agora, para resolver suas perguntas específicas:
Na verdade, não ( alguns detalhes )
Depende da plataforma, e não, isso realmente não ajuda na modabilidade
Acho que sim (embora eu nunca precisei fazer isso, porque todas as bibliotecas que eu uso foram programadas em c #)
Sim (embora eu tente evitá-lo, por motivos de consistência)
fonte