Instantly share code, notes, and snippets.
Created
May 6, 2025 16:44
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save todorok1/c6555a76da5a1a7ea7eaf93e27f430d8 to your computer and use it in GitHub Desktop.
シンプルRPGチュートリアル第73回 メニューの装備画面で装備するアイテムの選択画面のUIを制御するクラス
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Generic; | |
using UnityEngine; | |
using TMPro; | |
namespace SimpleRpg | |
{ | |
/// <summary> | |
/// メニューの装備画面で装備するアイテムの選択画面のUIを制御するクラスです。 | |
/// </summary> | |
public class MenuEquipmentSelectionUIController : MonoBehaviour, IMenuUIController | |
{ | |
/// <summary> | |
/// 選択中の装備カテゴリのテキストです。 | |
/// </summary> | |
[SerializeField] | |
TextMeshProUGUI _categoryText; | |
/// <summary> | |
/// 装備中のアイテム名のテキストです。 | |
/// </summary> | |
[SerializeField] | |
TextMeshProUGUI _equipmentItemNameText; | |
/// <summary> | |
/// 項目のコントローラへの参照用リストです。 | |
/// </summary> | |
[SerializeField] | |
List<SelectionItemController> _itemControllers; | |
/// <summary> | |
/// 前のページがあることを示すカーソルのオブジェクトです。 | |
/// </summary> | |
[SerializeField] | |
GameObject _cursorObjPrev; | |
/// <summary> | |
/// 次のページがあることを示すカーソルのオブジェクトです。 | |
/// </summary> | |
[SerializeField] | |
GameObject _cursorObjNext; | |
/// <summary> | |
/// ページ数を表示するテキストです。 | |
/// </summary> | |
[SerializeField] | |
TextMeshProUGUI _pageNumText; | |
/// <summary> | |
/// 項目のカーソルをすべて非表示にします。 | |
/// </summary> | |
void HideAllCursor() | |
{ | |
foreach (var controller in _itemControllers) | |
{ | |
controller.HideCursor(); | |
} | |
} | |
/// <summary> | |
/// 引数のインデックスが有効な範囲かどうかを判定します。 | |
/// </summary> | |
/// <param name="index">インデックス</param> | |
bool IsValidIndex(int index) | |
{ | |
return index >= 0 && index < _itemControllers.Count; | |
} | |
/// <summary> | |
/// 選択中の項目のカーソルを表示します。 | |
/// </summary> | |
/// <param name="selectedPosition">選択中の位置</param> | |
public void ShowSelectedCursor(int selectedPosition) | |
{ | |
if (!IsValidIndex(selectedPosition)) | |
{ | |
return; | |
} | |
HideAllCursor(); | |
var selectedController = _itemControllers[selectedPosition]; | |
if (selectedController != null) | |
{ | |
selectedController.ShowCursor(); | |
} | |
} | |
/// <summary> | |
/// 選択中の装備カテゴリのテキストをセットします。 | |
/// </summary> | |
public void SetCategoryText(string categoryText) | |
{ | |
_categoryText.text = categoryText; | |
} | |
/// <summary> | |
/// 現在装備中のアイテム名をセットします。 | |
/// </summary> | |
public void SetEquipmentItemNameText(string itemNameText) | |
{ | |
_equipmentItemNameText.text = itemNameText; | |
} | |
/// <summary> | |
/// 指定した位置の項目のテキストをセットします。 | |
/// </summary> | |
/// <param name="selectedPosition">位置</param> | |
/// <param name="itemId">アイテムID</param> | |
/// <param name="itemName">項目名</param> | |
/// <param name="itemNum">項目数</param> | |
/// <param name="canSelect">選択可能かどうか</param> | |
public void SetItemText(int selectedPosition, int itemId, string itemName, int itemNum, bool canSelect) | |
{ | |
if (!IsValidIndex(selectedPosition)) | |
{ | |
return; | |
} | |
var selectedController = _itemControllers[selectedPosition]; | |
if (selectedController != null) | |
{ | |
if (itemId == CharacterStatusManager.NoEquipmentId) | |
{ | |
selectedController.SetItemText(itemName, string.Empty); | |
} | |
else | |
{ | |
selectedController.SetItemText(itemName, itemNum); | |
} | |
selectedController.SetItemTextColors(canSelect); | |
} | |
} | |
/// <summary> | |
/// 指定した位置の項目のテキストを初期化します。 | |
/// </summary> | |
/// <param name="selectedPosition">位置</param> | |
public void ClearItemText(int selectedPosition) | |
{ | |
if (!IsValidIndex(selectedPosition)) | |
{ | |
return; | |
} | |
var selectedController = _itemControllers[selectedPosition]; | |
if (selectedController != null) | |
{ | |
selectedController.ClearItemText(); | |
} | |
} | |
/// <summary> | |
/// 全ての項目のテキストを初期化します。 | |
/// </summary> | |
public void ClearAllItemText() | |
{ | |
foreach (var controller in _itemControllers) | |
{ | |
controller.ClearItemText(); | |
} | |
} | |
/// <summary> | |
/// ページ表示テキストをセットします。 | |
/// </summary> | |
public void SetPagerText(string pagerText) | |
{ | |
_pageNumText.text = pagerText; | |
} | |
/// <summary> | |
/// 前のページがあることを示すカーソルを表示します。 | |
/// </summary> | |
/// <param name="isVisible">表示するかどうか</param> | |
public void SetPrevCursorVisibility(bool isVisible) | |
{ | |
_cursorObjPrev.SetActive(isVisible); | |
} | |
/// <summary> | |
/// 次のページがあることを示すカーソルを表示します。 | |
/// </summary> | |
/// <param name="isVisible">表示するかどうか</param> | |
public void SetNextCursorVisibility(bool isVisible) | |
{ | |
_cursorObjNext.SetActive(isVisible); | |
} | |
/// <summary> | |
/// UIを表示します。 | |
/// </summary> | |
public void Show() | |
{ | |
gameObject.SetActive(true); | |
} | |
/// <summary> | |
/// UIを非表示にします。 | |
/// </summary> | |
public void Hide() | |
{ | |
gameObject.SetActive(false); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment