はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX シーン間の情報渡し

あいさつ

どうも、はかせです。
前回までレーザーを作っていました。
それで絵を描けない私ではこれ以上は無理だと判断し、
これにてレーザーをいったん終了します。

今回はシーン間の情報渡しをやっていきます。

シーン間の情報渡し

開発を進めていくとゲームのメインのプレイシーンの結果を
リザルトシーンへ渡すといった要件が発生すると思います。
こういう時に方法として
・どこか1か所に情報をまとめて必要に応じて参照・更新を行う
・必要に応じてシーンクラス同士が相互にやり取りする

この2つがあると思います。

今回は前者の方法で実装しました。

実装

元々メモリ節約のためにオブジェクトプールやDirectXコンポーネントなどを
全てのシーンで共有していました。

そこにスコアを管理する変数と
その変数のゲッターセッターを追加して実装しました。

public:
    void SetScore(float score) {mScore = score;}
    float GetScore() const {return mScore;}
private:
    float mScore;

実行結果

一通りプレイしてリザルトシーンの画像です。
f:id:hakase0274:20190111231448p:plain

現在私のゲームでは
雑魚が10点、ボスが100点。
雑魚が6体、ボスが1体です。
なので全部倒すと160点になります。

まぁ製作者で全部わかってるので全部倒せますとも。はい。

あとがき

今回はシーン間の情報渡しでした。
正直シーン間の情報渡しはエンジン使う時でも
どうやってやるか悩みます。
(何やるにしても悩むんですけどね?その中でも悩む頻度が多いという話です)

それでは今回はこの辺でノシ

今回作ったものはgithubに上げました。
github.com