こんにちは。ヤマヤタケシです。
今回の記事は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();
}
}
そんじゃまた。
