UnityのJavascriptでState Patternをやる

こんにちは。ヤマヤタケシです。
今回の記事はUnityを初めて触るプログラマにちょっと役立つものです。
それ以外の人には意味がわかってもらえないでしょう・・・。

—-
設計を変更しました。↓の方がいいと思います。
UnityのJavascriptでState Patternをやる2
—-

最近触っているUnityのJavascriptは俺の知ってるのとは結構違っていて戸惑っています。
どうやら、UnityのJavascriptはC#の書き方をJavascript風にアレンジしたものぐらいに思ったほうが良いようです。
そもそもコンパイルされるし。
それぐらい違うのでUnityのJavaScriptを”Unityscript”と呼ぶ人も多いらしいのでその流れに乗りましょう。

さて、モード遷移を書くときにまずはswitchで書いたりしますが、すぐにステートパターン依存症が発動します。
Javascriptで書いていたようには書けないし、UnityScriptならではの書き方を模索しました。
いろいろ調べてたどり着いた書き方がこれです。
Unityscriptはclassがあって、interfaceが使えてimplementsするようなのでこうなりました。
コードがこうなるのならば、素直にC#を使ったほうが良さそうです・・・。

interface IState
{
    function Init()  ;
    function Update();
    function Exit()  ;
}

class MainState implements IState{
    function Init()   { Debug.Log ( "Main:init" ); }
    function Update() { Debug.Log ( "Main:update" ); }
    function Exit()   { Debug.Log ( "Main:exit" ); }   
}
private var mainState = new MainState();

class WaitState implements IState{
    function Init()   { Debug.Log ( "Wait:init" ); }
    function Update() { Debug.Log ( "Wait:update" ); }
    function Exit()   { Debug.Log ( "Wait:exit" ); }
}
private var waitState = new WaitState();

function StateTest()
{
    Debug.Log( "FunctionTest" );
    var s : IState;
    s = mainState;
    {
	s.Init();
	s.Update();
	s.Exit();
    }
    s = waitState;
    {
	s.Init();
	s.Update();
	s.Exit();
    }
}

そんじゃまた。

軽い気持ちで有名になりたいのでクリックをお願いします!

UnityのJavascriptでState Patternをやる” への1件のコメント

  1. ピンバック: UnityのJavascriptでState Patternをやるその2 | ヤマヤタケシのブログ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です