Unityと吉里吉里でSLGとかRPGを作るブログ

そんな分でUnity記事第一弾。
まず、当面の目標として、1、2作目で作った、特定条件でイベントを呼び出すと、その時の状況に合わせてシーンが再生される機能を作ります。
何のこっちゃと言う感じですが、要はフラグが成立したイベントを優先順位を付けて実行出来る機能です。

これを実現するためには、以下の条件を満たす必要があります。
・フラグデータを管理する
・イベントデータを管理する
・特定条件でゲームからイベント(会話シーンなど)を発生させる
・発生した会話シーンからゲームに戻る



■Unityでマスターデータを管理する

まずはマスターデータの管理です。
マスターデータの管理なんて、そのままズバリのノウハウが山の様に落ちているだろうと考えていましたが、全くそんなことはありませんでした。

まず前提条件を確認しなければいけません。
Unityは「シーン」という単位でゲームを管理しています。
そして、シーンを跨ぐと、インスタンスは破棄される。
簡単にいうと、タイトル画面で出てた「スタートボタン」は、タイトルシーンからオープニングシーンに行った段階で破棄される。
この辺はすごく便利な所であると同時に、ゲームを通して保持したい情報は、「破棄しない」様にする必要がある。

なので必要な条件は
・CSVなどで初期情報をロード
・ゲーム内で変更された内容はシーンに係わりなくずっと保持する

●CSVのロード
CSVのロード方法は結構ノウハウが落ちていました。
とりあえず、「Resources」フォルダの中に入れておけば、簡単にロードできます。
詳しくはここを確認
UnityでCSVファイルを読み込む

●シーンを跨ぐ
まず、フラグを管理する変数を、静的(static)に保持します。
さらにフラグなので、タイトル画面で初期化出来ればOK。
ロード時は、初期化されたそこに、ロード内容をアップデートすれば良い訳です。
詳しくはここを確認
【Unity】シーン間でスコアを共有 まとめ



■Unityでフラグ管理実装

まず、スクリプトで、フラグ管理用の「FlgMgr」というのを作ります。
この「FlgMgr」には、
・CSVをロードして、フラグを初期化する
・フラグを立てたり、フラグのONOFFを確認したりする

機能があります

次にスクリプトで、データロード用の「DataLoad」というのを作ります。
この「DataLoad」は、「FlgMgr」の初期化処理を呼びます。

次に「Title」シーンに「DataLoad」というゲームオブジェクトを設定し、上記2つのスクリプトをアタッチします。
Unity_DataLoad画面①


そんでもって、「Test1」シーンに「Test1Mgr」というゲームオブジェクトを作って、「FlgMgr」をアタッチします。
Unity_DataLoad画面②

同様にアタッチした、スクリプト「Test1Mgr」から、FlgMgrのデータが取り扱えるので、シーンを作るたびに、同様の事をやれば、ゲームを通して、フラグデータを管理できます。
タイトルで初期化するのは、「タイトルに戻る」を実行すると自動的に初期化できるからです。


■総括

本日はここまで、相変わらず、説明が下手ですが、一連の説明が終わったら、スクリプト等をダウンロード出来る様にします。
次回は、会話シーンの実装についてです








◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆

スポンサーサイト
2016.09.24 / Top↑
Secret

TrackBackURL
→http://nekodamasi.blog79.fc2.com/tb.php/140-f975cc0e