パスワードを忘れた? アカウント作成
16398734 journal
日記

yumeの日記: RogueLikeゲームを作るぞ 3

日記 by yume

メッセージ表示の仕組みを作る。

ResultMessageUIは、メッセージの出力を管理する。画面の表示はResultMessageUIViewが行う。

今のところ、メッセージが表示されるのは戦闘結果だけ(誰が誰を攻撃し、何点のダメージを与えたか)。
挙動の流れは次のようになる:

・ActorModelからIObservable OnActResultを生やす。
・OnActResultを購読すると、そのイベントが実行されたとき、IActResultを実装したクラスを受け取れる。
・これをActor全員分ResultMessageUIが購読する。
・Actorが戦闘を行うと、結果がOnActResultを通じてIActResultとして伝わる。
・ResultMessageUIは、受け取ったIActResultをResultMessageUIViewに伝え、画面に表示する。

この感じで、メッセージを表示したいあらゆる処理を、IActResultインターフェースを実装したクラスのインスタンスを飛ばすことでメッセージUIに伝達できる。
……関係ないけど「IActResultインターフェースを実装したクラスのインスタンス」って超長いな。「IActResult型で受け取れる」と書きたいけどクラスじゃねえしな……ってなってるんだけど、これ簡潔な言い回しあります?

結果はこんな感じ

次はアイテムの発動効果を実装したいんだけど……これ毎回困ってるんだよな。
パッと思いつくのは……
発動効果インターフェース「IInvokeEffect」を定義して、あらゆる発動効果はこれを実装したクラスとして表現する、ということにしたとする。
あらゆるカードは全てScriptable ObjectというUnityが用意したクラスを継承していて、これはUnityエディター上であるクラスの内部変数を変えたアセットを複製しておけるというものだが、この場合どのカードがどの発動効果クラスを使うかを当て嵌めなきゃならん。
そこで、InvokeEffectType列挙子を定義して、発動効果が増えるたびにそのTypeも増やす。
全てのカードはInvokeEffectType変数を持ち、そのカードの発動したい効果にあったTypeを選ぶ。
ゲーム中、発動効果を使う際に、Typeに応じて適切なInvokeEffectクラスをインスタンス化して、そいつを実行する……ってな感じかなぁ。
まぁ発動効果を100も200も作るわけではないだろうから、別にこれでもいいのかな。発動効果の効果量が変わる場合とかどうしよう。それも別のTypeとするか……うーん。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...