Unity3Dの JS でOOP

UnityのJSで、どこまでOOP的手法が出来るか試しています。

結論、
『意外に出来る子』

まあ、C#なので、当たり前か。C#C++からUnityに入った方には物足りないかも知れないけど、Flasherからすれば、充分ですな。
enum、組み込み型配列、メソッドのオーバーロードなど、AS3にない部分もあります。

使えるOOP手法

  • 継承 extends
  • インターフェース interface, implements
  • 修飾子 public, protected, private, internal

その他できること

  • 静的変数、静的関数 static var , static function
  • メソッドのオーバーロード (同名メソッドで、複数の引数タイプを用意出来る。)
  • 組み込み型配列 例) int, Vector3
    • 多次元配列は int[,] ←こんな感じ
  • 列挙型 enum
  • スコープの範囲:AS3と大体同じ。メソッド終了までスコープが続く。(個人的には好きじゃない)
  • Genelicクラスも使えるよ

使えない?かも。方法有ったら教えてください。

  • MonoBehaviourではコンストラクタは使えない?
    • Objectクラスでは、コンストラクタがあるが、MonoBehaviourでは、使えない。
    • Singletonには、AS3と同じ手法を使う。
      • MonoBehaviourでは使えないだけで、Objectでは、普通にprivateコンストラクタもつかえる。
    • ScriptableObjectを継承すれば、コンストラクタが存在する。
    • MonoBehaviourでは、Awake()を使う。
  • 定数 const はないっぽい。
  • 名前空間は使えない? C#名前空間からimportは出来る。
  • C#のdelegateは定義できないかも。c#で定義したデリゲートを使うことは出来た。