ゲーム最序盤プレイ画面。オリジナル要素が欲しくて、ミスタードリラー的な穴掘りローグライクゲームにしました。
下に実装に苦労したものを軽く書いておきます。
ド初心者向けです。
プレイヤーと敵のパラメータ管理
Unity-Excel-Importer-Makerを使いEXCELで管理している。HPなどのパラメータはプレイヤーや敵にアタッチしているスクリプトで取得するようにする。パラメータは管理する場所が分散しすぎないように。
EXCELからデータを抜き出す時にエラーが頻出していたが、int変数の場所に文字列が入っていた為だった。
セーブデータの管理
【Unity】オブジェクトをJsonにシリアライズしてテキストに保存・読み込みする
この記事を参考に作成。シーン切替時にオートセーブするようにした。保存項目はプレイヤーのステータスとセーブ時にいたシーン名。これによりロード時にそのシーンの最初からやり直す様に出来る。
またゲームオーバー時にはセーブだけして、拠点扱いのシーンに飛ばすようにした。
UI右上のメッセージダイアログ
「プレイヤーは10のダメージを与えた」「宝箱を開けた」などのメッセージ表示箇所です。空オブジェクトにスクリプトを貼っつけて管理しています。実装はキューを使っています。
using UnityEngine.UI; //必須
public class UIControl : MonoBehaviour
{
Text MessageDialog1; //メッセージダイアログの表示
Text MessageDialog2; //メッセージダイアログの表示
Text MessageDialog3; //メッセージダイアログの表示
Text MessageDialog4; //メッセージダイアログの表示
Text MessageDialog5; //メッセージダイアログの表示
Queue<String> Message = new Queue<String>(); //メッセージダイアログの入れ物(キュー)
int MaxMessegeCount = 30; //メッセージの最大ログ数
string MessegeOut;
//各クラスから受けとったメッセージを入れるメソッド
public void MessageDialogIn(string InMessege)
{
//受け取ったメッセージを格納
Message.Enqueue(InMessege);
//メッセージログが最大になったら一つ消す
if (Message.Count >= MaxMessegeCount)
{
Message.Dequeue();
}
MessageDialogOut();
}
//メッセージ表示用
void MessageDialogOut()
{
//メッセージダイアログのテキストを取得(表示用)
MessageDialog1 = GameObject.Find("MessageText (1)").GetComponent<Text>();
MessageDialog2 = GameObject.Find("MessageText (2)").GetComponent<Text>();
MessageDialog3 = GameObject.Find("MessageText (3)").GetComponent<Text>();
MessageDialog4 = GameObject.Find("MessageText (4)").GetComponent<Text>();
MessageDialog5 = GameObject.Find("MessageText (5)").GetComponent<Text>();
//メッセージログを下から上にコピーしていき、最後に最下段はDequeueしたものを入れる
MessageDialog1.text = MessageDialog2.text;
MessageDialog2.text = MessageDialog3.text;
MessageDialog3.text = MessageDialog4.text;
MessageDialog4.text = MessageDialog5.text;
MessageDialog5.text = Message.Dequeue(); ;
}
}
プレイヤーの攻撃など、メッセージが出たら外部より「MessageDialogIn」を実行して飛ばしています。Enqueueで入力しDequeueで出力できる。UIはテキストボックスを縦に5つ並べてそこに表示している。
配列などを使えばスムーズに書けるのですが力技で実装しています。持っているチンケなカードで勝負している感が凄い。
今後実装すべきもの
- ゲームボリューム:敵や攻略フロアの追加
- アイテム:インベントリとアイテムの実装。拠点では倉庫と商人も欲しい。
- トラップ:ダメージ床やワープ等
アイテム要素が入れられたらローグライクとしての基本がほぼ完成する。
床に置いてあるアイテムに接触→プレイヤーのインベントリに追加→メニューより使用→アイテム消失・効果発生→ターン経過としたいが、実装の難易度は高そう。良いアセットとか参考になるものがあったら誰か教えてください…。