In che modo C # e UnityScript differiscono nello sviluppo di Unity? [chiuso]


13

Oltre alle ovvie differenze di linguaggio, in che modo UnityScript e C # differiscono quando si sviluppano giochi in Unity3D?

  • C'è una notevole differenza di prestazioni?
  • Il codice UnityScript è impacchettato così com'è? Se sì, questo aiuta la modificabilità del gioco?
  • È possibile utilizzare le librerie sviluppate per una lingua mentre si sviluppa nell'altra?
  • Le due lingue possono essere mescolate nello stesso progetto Unity? codificare alcune parti in C # e altre in UnityScript?

C'è un componente non di scrittura saggio. Ma C # consente cose extra come le importazioni DLL. A parte questo, è una "scelta". E completamente soggettivo. Non dimenticare, c'è anche Boo in cui puoi scrivere il tuo codice.
Sidar

2
Domanda utile con risposte obiettive - sembra ingiusto che sia stata chiusa.
UpTheCreek

1
Ci sono due ragioni principali per cui questa domanda è stata chiusa e non hanno a che fare con l'utilità della domanda o l'obiettività delle risposte. Innanzitutto, il post pone più di una domanda non correlata. In secondo luogo, alcune delle domande poste sono troppo orientate alla discussione e / o due ampie per essere appropriate scritte. Quanto sia "utile" o popolare una domanda, o quanto sono buone le risposte, sono entrambe indipendenti dal fatto che la domanda sia appropriata o meno per il sito.

Risposte:


12

C'è una notevole differenza di prestazioni?

No. Tecnicamente c'è una differenza di prestazioni molto piccola , ma nella maggior parte dei casi non è abbastanza significativa da basare la scelta della lingua.

È possibile utilizzare le librerie sviluppate per una lingua mentre si sviluppa nell'altra?

Sì. Finché si assicura di mantenere la struttura delle cartelle consigliata dallo sviluppatore della libreria, è possibile accedere a tale libreria da qualsiasi lingua. Questo ha a che fare con l' ordine di compilazione di Unity . Tuttavia, alcune funzioni degli IDE, come il completamento automatico, potrebbero non funzionare per la libreria scelta. (EDIT: questo può essere risolto usando il plugin gratuito UnityVS per Visual Studio.)

È possibile mescolare le due lingue nello stesso progetto Unity codificando alcune parti in C # e altre in Javascript?

Ancora sì. Tuttavia, diventa complicato rapidamente, poiché devi assicurarti che tutto sia compilato nel giusto ordine. Sebbene sia tecnicamente possibile, ti consiglio di scegliere una lingua e di attenersi ad essa.

In quale lingua sono disponibili risorse specifiche per gli sviluppatori di giochi migliori (libri, siti Web, forum)?

Difficile da dire. Dalla navigazione nei forum, direi che Javascript ha leggermente più tutorial ed esempi di codice. Il codice è generalmente abbastanza facile da trasferire in un'altra lingua e, poiché le librerie sono utilizzabili in più lingue, molto probabilmente questo non sarà un grosso problema.


8

La prima domanda che tutti gli sviluppatori Unity principianti hanno è C # o JS. Vai sempre con C #.

Ora, in questo momento potresti pensare: "Ma non voglio imparare C # e conosco già un po 'di JavaScript".

Ma la cosa fuorviante che devi considerare è che Unity JavaScript non è JavaScript. È un'impiallacciatura superficiale della sintassi ECMA su .NET CLR. Non fa nessuna delle cose interessanti di JavaScript che piacciono agli allegati anonimi e ai riferimenti alle funzioni nel modo in cui li useresti normalmente. Ha i suoi array che non corrispondono ai normali array .net e incontrerai molte insidie ​​e limitazioni che avresti potuto semplicemente evitare usando C #. Unity JavaScript è solo uno strato sintattico di caramelle progettato per rendere .NET meno intimidatorio, niente di più. Ti farà più male che bene.


7

Prima di tutto, consiglierei C # su JavaScript per la programmazione in Unity per due motivi principali. Il primo motivo deriva dalla differenza di digitazione forte / debole che hai respinto. Penso che la digitazione forte funzioni meglio della digitazione debole a livello concettuale, ma francamente è un argomento molto importante che le persone hanno e quindi mi concentrerò di più su un problema pratico specifico: Distribuire su iOS (e forse anche su altre piattaforme, ma questo è il solo uno che conosco per certo) richiede la digitazione statica. Unity in realtà ha persino una direttiva "#pragma strict" che può forzare la digitazione statica in JavaScript per questo motivo, ma questo mi porta solo al mio secondo motivo ...

In secondo luogo, JavaScript in Unity non è del tutto uguale a JavaScript in un browser. Ciò crea problemi quando si tenta di applicare le conoscenze esterne a Unity (ovvero la maggior parte delle risorse su JavaScript) alla programmazione in Unity. Questo è il motivo per cui molti sviluppatori Unity si riferiscono al linguaggio UnityScript.


Ora per rispondere alle tue domande specifiche:

C'è una notevole differenza di prestazioni?

Non proprio, no ( alcuni dettagli )

Il codice javascript è impacchettato così com'è? E se sì, questo aiuta la modificabilità del gioco?

Dipende dalla piattaforma e no, questo non aiuta davvero la modificabilità

È possibile utilizzare le librerie sviluppate per una lingua mentre si sviluppa nell'altra?

Penso di sì (anche se non ho mai avuto bisogno di farlo, perché tutte le librerie che utilizzo sono state programmate in C #)

È possibile mescolare le due lingue nello stesso progetto Unity codificando alcune parti in C # e altre in Javascript?

Sì (anche se cerco di evitarlo, per motivi di coerenza)


dentedpixel.com/developer-diary/… potrebbe voler aggiungere questo alla tua risposta. Upvoted.
Gray

linke interessante, aggiunto
jhocking
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.