こんにちは。ヤマヤタケシです。
今回の記事は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をやるその2 | ヤマヤタケシのブログ