投稿者 tel | 2011年5月26日

UnityのJavaScript

UnityのJavaScriptはWebブラウザとかにのってるJavaScriptとはかなり違うので違いをメモ。

  • 型を指定して変数を宣言できる
    var i: int = 0;
  • 標準グローバルオブジェクトが存在しない
    Mathの代わりにMathfなど代わりになるものは存在している
  • argumentsオブジェクトが存在しない
  • 標準Arrayオブジェクトがなんか違う
    Arrayで使えるクラスはあるがJavaScriptのArrayオブジェクトとは違うみたい
    型指定したビルドイン配列(固定長)かArrayListを使う(たぶんC#の配列が使える)
  • prototypeが存在しない
    classを使えば代用できそう
  • 動的なメンバの追加はできない
  • ダックタイピングできない
    SendMessageを使えば似たようなことができるかも
  • オブジェクトリテラル{}はSystem.Hashになるっぽい
  • メソッド名がcamel記法じゃなくてpascal記法
    toString じゃなくて ToString になっている
  • 一度に複数の変数を宣言できない
    var a = 0, b = 1; // エラー
    そもそもカンマ演算子が使えないみたい
  • グローバル変数は定義できないらしい
    ファイルに書かれたものはclassで囲まれている
    どこでもつかるような変数を作る場合はstaticキーワードをつけてファイル名.hogeみたいにする
    ちなみにファイル名がクラス名になるのでファイル名の変数とか関数作るとはまる
  • withがない
    特に問題なし
  • $が変数名、関数名に使えない
    使えないものはしょうがない
  • 引数が一致しないと怒られる
    function hoge(a, b) {};
    hoge(a); // エラー
  • parseIntがおかしい
    基数の設定ができない
    char型を渡すとアスキーコードの番号を返す(0 -> 49)
  • 関数のオーバーロードができる
  • enumが使える
  • typeofが文字列を返さない
    System.Type型の値が返ってくる
    これはナイス。typeof Arrayとかやって”object”とか返ってきてムキーってならない。
  • strictモードにするときに”use strict”じゃなくて#pragma strictを使う
    Unity 3.4からは何も書かなくてもstrictモードになっている
  • for..in文が配列にも使える?
    サンプルを見る限り配列にも適用しているので、もしかしたら順番とか固定なのかもしれない

UnityのWikiにもっと詳しい解説がのってたような気がした。基本的にはJavaScriptの皮をかぶったC#みたいなかんじ

http://www.unifycommunity.com/wiki/index.php?title=UnityScript_versus_JavaScript


Responses

  1. […] ただしUnityのJavaScriptにはクセがあるらしいので注意が必要。 UnityのJavaScript – 生存日記 […]

  2. […] https://spphire9.wordpress.com/2011/05/26/unity%E3%81%AEjavascript/ […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。