[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のサンプルモデルデータをこのノベルエンジンを使って表示させたいと思います。
コメント