2012年9月23日日曜日

Unity C#とJavascriptの主な違い

Unity WikiにてUnity C#とJavascriptの違いを整理しているので紹介したい。

なおリンク先では各々の違いの詳細説明もついているため興味ある方は併せて確認いただくと、さらに勉強になるとおもう。


http://wiki.unity3d.com/index.php/Csharp_Differences_from_JS
17 August 2012, at 11:59

Unity C#とJavascriptの主な違い
  • 関数定義
function Start () { /* stuff. */ } // JS
void Start() { /* stuff. */ } // C#
string MyFunc() { return "hello, world"; } // C#
  • C#ジェネリック
//JS
function Start(){  var someScript : ExampleScript = GetComponent(ExampleScript);  someScript.DoSomething();}
//C#
void Start(){  var someScript = GetComponent<ExampleScript>();  // Or a more verbose version of the line above: 
var someScript = (ExampleScript) GetComponent(typeof(ExampleScript)); 
someScript.DoSomething();}
  • foreachキーワード
for(var x in someList){ // JS
  x.someVar = true;}
foreach(var x in someList) { // C#
  x.someVar = true;}
  • newキーワード
var foo = Vector3(0, 0, 0); // JS
var foo = new Vector3(0, 0, 0); // C#
Instantiate(someObj, new Vector3(0, 0, 0), someRotation); // C#
  • 型キャスト
var foo : GameObject = Instantiate(someObj...); // JS
var foo = Instantiate(someObj...) as GameObject; // JS
var foo = (GameObject) Instantiate(someObj...); // C#
var foo = Instantiate(someObj...) as GameObject; // C#
  • Getter/Setterプロパティ
C#では変数であるかのようにアクセスできる特別な関数が定義することができる。たとえばfoo.somVar="testing";と記述して裏ではget/set関数を準備してこの引数"testing"を内部に保持するようにすることはできる。しかし他のあらゆる処理(例 一文字目は大文字とする、等)も行うことは可能である。つまり変数割当てだけでなく、関数呼び出しにて変数の値セットを行い、その他もあらゆる処理を加えることが出来る。

考察
このリストを作成するきっかけとなったのはUnityチュートリアルにJavascriptが多いためにC#でなくJavascriptを勉強しようと計画した人がいたためだ。それには一定のメリットがあり、特にプログラミングが初めてだという場合にチュートリアルからコピー&ペーストが出来るという側面がある。しかし、長い目でみるとそれは言語を選択する正しい理由にはならない。

事実はC#およびJavascriptが90%の部分でソックリである。ほとんどの場合、JavascriptをC#に変更するための箇所はわずかだ。そこで、差がわずかだとするならC#をなぜ選択するとしたらその根拠がポイントとなる。まあ、この議論を始めると宗教的な論争になりかねないのでここでどちらかに優劣をつけるつもりはない。

でも断言できることとしてC#を私が選択した理由はエディタの優位性だ。

MicrosoftはVisual C# Expressのフリー版があり、Unityと良く連携できている。Intellisenseの自動補完機能がありtooltipヘルプも関数パラメータが含まれる。強力なエディタはコーディングの生産性をあげる。現時点ではJavascriptで同等の機能をもったフリーのエディタはみたことがない。
--------

はて・・・、違いの点については理解できたつもりが、最後のVisual C# Expressの一文で飛躍したのでちょっと分からなくなってしまった。

以下のUnity Wikiでも設定方法はあるが、はたしてMonoDevelopの自動補完よりはるか優れているとのことなのだろうか?そのあたりは今後で検証してみたい。

http://wiki.unity3d.com/index.php?title=Setting_up_Visual_Studio_for_Unity#Using_Visual_C.23_Express_As_the_code_editor

Unityでどうせ覚えるならやはりC#でOK!

0 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿

ブログ アーカイブ