Unityに関連する記事です

 以下の内容で順番に実装していきます。

19.シナリオデータを管理するためのGameDataクラスをシングルトンとして作成する
20.ゲーム進行の管理を行うGameDirectorクラスを作成する
21.メッセージ表示用のスクリプトを作成するΑ淵妊丱奪哀如璽燭髻GameDirectorより受け取ったシナリオデータを参照するように修正する)


19.シナリオデータの管理をするためのGameDataクラスをシングルトンとして作成する


 シナリオデータをUnityに読み込んで管理させるために、GameDataクラスを作成しましょう。
シナリオデータは複数のシーンにおいて使われるであろうことを想定し、GameDataをどのクラスからでも参照できるように
シングルトンパターンというデザインパターンを利用して作成します。

 また処理の一部には、Linq(リンク)という機能を利用しています。これは統合言語クエリと呼ばれる機能の1つで
Listのようなデータの集まりに対して何らかの処理を行うことができる機能です。ここではSelectというメソッドを使っています。
またその際には構文を短くまとめて簡潔に書くことが出来るものです。
 Linqの詳しい使い方については後述しますが、多くの記事がありますので検索して調べてみましょう。

 Scriptsフォルダ内でメニューを表示し、Create => C# Script を選択し、名前をGameDataにします。

 ※ Jsonファイルではなく、XLS Import Settingを使ってExcelファイルからスクリプタブル・オブジェクトを作成した場合には、
   下段にある別手順でGameDataスクリプトを作成してください。


GameData.cs

 <= クリックすると開きます。




 前回用意したJsonファイルを読み込むメソッド(LoadMasterDataFromJson.LoadScenarioMasterDataFromJson)を
GameDataのCreateScenarioDataListメソッドで呼び出し、ScenerioDataをUnityに登録します。

 ヒエラルキー上でメニューを表示し、Create Emptyを選択して、名前をGameDataに変更します。
これはヒエラルキー上にあればよいので、Canvas内でなくても問題ありません。



 作成したGameDataスクリプトを、このGameDataゲームオブジェクトにアタッチします。ScenarioSOという、スクリプタブル・オブジェクトをアサインできる変数が
インスペクター上に表示されますので、こちらにProject内に用意してあるScenarioSOスクリプタブル・オブジェクトをドラッグアンドドロップでアサインします。

スクリプタブル・オブジェクトをGameDataゲームオブジェクトのGameDataクラスにアサインする方法
https://gyazo.com/71170e7ba7501d07eebdcce20268d699

 実行してみましょう。
 成功すればScenarioDataにJsonで用意したシナリオデータが各項目ごとに自動的に分類されて読み込まれて登録されます。



動画です。
https://gyazo.com/22e854dec7086100c9f0a44997bec29d

 これでExcelで作成したシナリオデータがUnityに登録されて、ゲーム内で利用する準備がすべて整いました。


XLS Import Setting を利用してExcelファイルを元にスクリプタブル・オブジェクトを作成した場合


  ※ XLS Import Setting を利用してスクリプタブル・オブジェクトを作成した場合には、GameDataスクリプトについては、以下のものを利用してください。

GameData.cs

 <= クリックすると開きます。



20.ゲーム進行の管理を行うGameDirectorクラスを作成する

 
 ゲーム全体を管理して、ゲームの進行を行うGameDirectorクラスを作成します。
このGameDirectorが次に再生するシナリオの設定や、分岐の管理を行います。

 Scriptsフォルダ内でメニューを表示し、Create => C# Script を選択し、名前をGameDirectorにします。

GameDirector.cs

 <= クリックすると開きます。


 GameDirectorでは、現在再生しているシナリオの番号を管理しています。
また、GameDataクラスにアクセスして、次に再生するシナリオデータ(表示するメッセージや分岐の情報など)を取得し、
それをTextMessageViewerクラスに渡す処理を行っています。

 GameDataと同じように、ヒエラルキー上でメニューを表示し、CreateEmptyを選択し、名前をGameDirectorに変更します。
これはヒエラルキー上にあればよいので、作成する場所はCanvas内でなくても問題ありません。

 このGameDirectorゲームオブジェクトにGameDirectorスクリプトをアタッチします。




 インスペクターを確認し、アサイン情報としてTextMessageViewerクラスがアサイン出来るようになっていますので
ヒエラルキー上にあるTextMessageViewerクラスがアタッチされているゲームオブジェクトを選択して、ドラッグアンドドロップでアサインします。

https://gyazo.com/ddbaa99be8432a9c523c2caa3b598a8c


21.メッセージ表示用のスクリプトを作成するΑ淵妊丱奪依僂防充┐靴討い織瓮奪察璽犬覆匹GameDirectorより受け取ったシナリオデータを参照できるように修正する)

 
 いままでTextMessageViewerクラスでは、仮メッセージとして手動でメッセージなど配列に登録しデバッグを行ってきましたが
ここでやっとシナリオデータがTextMessageViewerに届く準備が整いましたので、TextMessageViewerクラスを修正し、受け取ったシナリオデータを使って
メッセージやキャラの名前を表示するように修正を行っていきます。


TextMessageViewer.cs

 <= クリックすると開きます。


 分岐の番号を代入するための変数branchesを追加し、SetUpScenarioDataメソッドを追加します。
このメソッドを追加しましたら、GameDirectorスクリプトを開いて、コメントアウトしてあった

textMessageViewer.SetUpSenarioData(senarioData);

この処理からコメントアウトを外して実行できるようにします(TextMessageViewerに該当のメソッドを追加したので、これでもうエラーは出ません)

 適宜な地点にDebug.Logを入れておきましたので、処理が順番にちゃんと流れているかをコンソールで確認しましょう。

 正常に処理が動いていれば、シナリオデータの0番のデータの最初のメッセージが再生されます。
メッセージ送りをしたり、表示されるキャラの名前がちゃんとシナリオデータと一致しているかなどを確認します。

https://gyazo.com/10efa1cafc571e86b84c9b0573042e70

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます