概要

クルクルシューティング
設定画面
設定画面でのBGMや効果音をOFFにした際にアイコンを変えられるように対応。
本来は既存の構成で規定の場所にON/OFFそれぞれのアイコンを設定してあげれば、アイコンを変えられるようだけど、透過処理の影響か上手くいかない。
なので、スクリプトでアイコン画像を変えるよう様にしました。
// アイコン切り替え
bgmIcon.sprite = isOn ? bgmIconOn : bgmIconOff;
確認ダイアログ
ゲームを終了ボタンを間違って押してしまった場合を考慮して、確認ダイアログを表示するようにしました。
ダイアログ自体は色んな画面で使用するので、呼び出し側でメッセージ等を設定可能に。
ダイアログ側の処理
public static void Show(string title, string message, Action onOK, Action onCancel = null,
string okText = "OK", string cancelText = "キャンセル")
{
if (Instance == null) return;
Instance.gameObject.SetActive(true);
// タイトル(空なら非表示)
if (Instance.titleText != null)
{
Instance.titleText.text = title;
Instance.titleText.gameObject.SetActive(!string.IsNullOrEmpty(title));
}
// メッセージ
Instance.messageText.text = message;
// OKボタン
Instance.okButton.gameObject.SetActive(true);
Instance.okButton.GetComponentInChildren<TextMeshProUGUI>().text = okText;
// Cancelボタン
bool showCancel = onCancel != null && !string.IsNullOrEmpty(cancelText);
Instance.cancelButton.gameObject.SetActive(showCancel);
if (showCancel)
{
Instance.cancelButton.GetComponentInChildren<TextMeshProUGUI>().text = cancelText;
}
// コールバック保存
Instance.onOK = onOK;
Instance.onCancel = onCancel ?? (() => Instance.Close());
}
ダイアログの呼び出し
GenericDialog.Show(
title: "確認メッセージ",
message: "本当にゲームを終了しますか?",
onOK: () =>
{
this.FixSettings?.Invoke(SettingsResult.ExitGame);
Destroy(this.gameObject);
},
onCancel: () =>
{
},
okText: "終了",
cancelText: "キャンセル"
);

各ボタンを押下した処理も呼び出し元でちゃんと設定できるので、今後も流用していけるね。
本来はアンロードさせずに表示、非表示させる感じにすると良いらしいけど、サイズ調整とかを
ミスってたり、表示されなかったりと悪戦苦闘してたので、
結局は必要なシーンにて個別に呼び出すようにしています。
(他のシーンでは読んでないのでちゃんと動くのかは未知数)
明日の予定
プレイ画面のオーディオ関係は大体完了したので、他の画面にも反映させていきます。
また、BGMも新しく作ろうかなと思います。
おまけ
クリスマスなので、クリスマスバージョンのくるしゅ~です。



コメント