ふりかえり
前回は、テストプレイしてくださった方々からのフィードバックをもとに、戦闘の倍速機能を追加しました!
テンポが改善され、よりストレスなく戦闘を楽しめるようになりました。
ステージ選択機能を実装!
今回も引き続き、クローズドテストでいただいたご意見をもとに改善を行います。
特に多かったのが、
「ステージを選べず、不便に感じる」
「敵がどんどん強くなる一方で、弱い敵を相手にしたくても戻れない」
という声でした。
現状の課題
これまでの仕様では、ステージ内の全てのモンスターを倒すと自動で次のステージに進む仕組みでした。
そのため、一度進んだら戻ることができず、金策やレベル上げが困難でした。
実装した機能
今回、以下の2つの機能を新たに実装しました。
① 繰り返しモード
特定のステージを繰り返しプレイ可能にする機能です。
ONにすることで、モンスターを全滅させたあとも、そのステージの最初に戻って再戦できるようになります。
→ 効率よく経験値やG(ゲーム内通貨)を稼げるので、育成や金策にとても便利!
② ステージ移動機能
任意のタイミングで、ステージを前後に移動できる機能です。
進みすぎて敵が強すぎたら1つ前のステージに戻ったり、逆に戻りすぎたら最大到達ステージまで一気に進めるようにしています。
スクリプト
StageManager.cs(ステージ管理)
- 現在のステージ番号や最大到達ステージを管理
- ステージクリア後、繰り返しか次ステージかを判定し、適切な処理を行う
- 前後のステージへの移動関数を用意
- 各ステージの敵数やフラグをリセット
private int currentStage = 1; // 現在のステージ
private int monstersDefeatedInStage = 0; // 現在のステージで倒したモンスター数
private bool isStageClearing = false; // ステージクリア中かどうかを管理
private bool isRepeatModeEnabled = false; // 繰り返しモードが有効かどうか
private int maxStageReached = 1; // 到達した最大ステージ
// 繰り返しモードの場合は現在のステージをリセット、そうでなければ次のステージに進む
if (isRepeatModeEnabled)
{
Invoke("ResetCurrentStage", 1.0f); // 1秒後に現在のステージをリセット
}
else
{
Invoke("NextStage", 1.0f); // 1秒後に次のステージに進む
}
// 次のステージに進む
public void NextStage()
{
currentStage++;
monstersDefeatedInStage = 0;
// 現在のステージをリセット(繰り返しモード用)
private void ResetCurrentStage()
{
monstersDefeatedInStage = 0;
isStageClearing = false; // ステージクリア中フラグをリセット
// 敵の準備とアニメ、UI更新など…
}
// 前のステージに移動
public void GoToPreviousStage()
{
if (currentStage > 1)
{
currentStage--;
monstersDefeatedInStage = 0;
isStageClearing = false;
// BGM・背景更新、敵準備、UI更新…
}
}
// 次のステージに移動
public void GoToNextStage()
{
if (currentStage < maxStageReached)
{
currentStage++;
monstersDefeatedInStage = 0;
isStageClearing = false;
// BGM・背景更新、敵準備、UI更新…
}
}
// 前後移動の可否
public bool CanGoToPreviousStage() { return currentStage > 1; }
public bool CanGoToNextStage() { return currentStage < maxStageReached; }
BattleUIManager.cs(UI制御)
- 「繰り返しモード」のボタンUIを制御
- ON/OFF状態によって、ボタンの色やラベルを変更
- 「前のステージ」「次のステージ」ボタンの有効/無効も条件で切り替え
[Header("Repeat Mode UI")]
public Button repeatModeButton; // 繰り返しモードボタン
public TextMeshProUGUI repeatModeButtonText; // ボタンテキスト
public Color repeatModeEnabledColor = Color.green;
public Color repeatModeDisabledColor = Color.white;
// 繰り返しモードボタンのイベントリスナーを設定
repeatModeButton.onClick.RemoveAllListeners();
repeatModeButton.onClick.AddListener(ToggleRepeatMode);
// 繰り返しモードボタンの更新
private void UpdateRepeatModeButton()
{
if (stageManager == null || repeatModeButton == null) return;
bool isRepeatModeEnabled = stageManager.IsRepeatModeEnabled();
if (repeatModeButtonText != null)
{
repeatModeButtonText.text = isRepeatModeEnabled ? "繰り返し: ON" : "繰り返し: OFF";
}
var buttonImage = repeatModeButton.GetComponent<Image>();
if (buttonImage != null)
{
buttonImage.color = isRepeatModeEnabled ? repeatModeEnabledColor : repeatModeDisabledColor;
}
}
// 前後ボタンの押下可否更新
bool canGoPrevious = stageManager.CanGoToPreviousStage();
previousStageButton.interactable = canGoPrevious;
bool canGoNext = stageManager.CanGoToNextStage();
nextStageButton.interactable = canGoNext;
動作確認
- 繰り返しモードをONにすると、ステージクリア後に同じステージが再開されました!
- 前後ボタンでステージ移動もスムーズに行え、自由にプレイできるように!
まとめ
今回は、ユーザビリティ向上のために「ステージの繰り返しプレイ」および「任意のステージ移動」機能を追加しました。
これにより、自分に合ったステージで繰り返し戦えるようになり、金策やレベル上げの自由度が大幅に向上しました!
プレイヤーが自分のペースで遊べる環境が整ってきたと思います
次回予告
次回は、
- 画面が回転してしまう問題
- モンスター画像がぼやけてしまう現象
など、実機プレイで判明した細かい問題点の修正に取り組みます!
お楽しみに!

