[実験室・備忘録]【UnityでNovelゲームのスケルトンみたいなものを作ってみたい】[3夜目]

[2]ノベル部分を作る

▼素材
・背景画像、1920×1080pxのもの
・イベント用に 1920×1080pxの画像をもう一枚用意してもいい

▼参考にしたサイト
[オリジナルゲーム.com] https://original-game.com/how-to-make-a-novel-game-in-unity2d/
[Live2D Cubism マニュアルページ] https://docs.live2d.com/cubism-editor-manual/top/

 では、続けてノベル部分を作っていきます。基本部分は参考サイトのオリジナルゲーム.comのやり方のとおりにそのまま従って、テキストデータからシナリオデータを読み込んで、本文はテキストボックスに表示し、コマンドはコマンド処理を行うというところまで作ります。つまり最後の5ページ目まで全部作ります。

 仕組みを要約すると、シーンの開始と共に「TextManagerクラス」からシナリオデータ(プレーンテキスト)を読み込んで、バッファに全部取り込んだ後1行ずつ取り出して中身を判定。#の有る無しでテキスト本文かコマンドかを区別して、テキスト本文だったらテキストボックスに表示。コマンドだったらコマンド処理をする。また、画像に関する処理ならそこから先は、「ImageManagerクラス」を継承した各子クラスに処理を任せる。これをシナリオデータの最後の行まで繰り返していますね。

【メモ】「ImageManagerクラス」親クラスには共通の処理と基本的な型を示す(純粋仮想関数)のみで具体的な定義は子クラスでするという記述があるので、子クラスで、GetImage();をオーバーライドして記述する。そうする事で、「TextManagerクラス」内の分岐処理で、各子クラスのインスタンスを通して、子クラスのGetImage();を呼んだときに(親クラスのGetImage();では無く、各子クラスのGetImage();の内容を実行)ビジュアル画面上にある(ヒエラルキービューやシーンビュー)パネル下のimageを取得。これによりスクリプトからそれぞれのimageを以降操作できるようになる(※各パネルには、子クラスのスクリプトが前もって紐づけられている)。

 panel(パネル)が持つimageコンポーネントに「SourceImage」という項目があって、そこにスプライト(画像データ内包)をスクリプトから割りつけたり、外したり出来ますね。

【メモ】Canvasの中で全部の要素、画像(背景とイベント)およびテキストボックスのソート順を一括管理できる。
【分岐・迷うところ】Panelを追加することで、新たに立ち絵などを表示したいとき既存クラスを流用できるが、Panelが増える。

 次からLive2Dのサンプルモデルデータをこのノベルエンジンを使って表示させたいと思います。

 

コメント

タイトルとURLをコピーしました