ゲームの進行状況などをフラグを利用して管理した場合のサンプルコードです。
HashSetは一意な要素を格納するため、重複を許容せず、高速な検索が可能です。
以下に、HashSetを使用したフラグ管理のサンプルコードを示します。
using System.Collections.Generic;
using UnityEngine;
public class FlagManager : MonoBehaviour
{
HashSet<string> flags = new HashSet<string>();
/// <summary>
/// フラグを設定します。
/// </summary>
/// <param name="flag">設定するフラグ名</param>
void SetFlag(string flag)
{
flags.Add(flag);
}
/// <summary>
/// 指定したフラグが設定されているかどうかを確認します。
/// </summary>
/// <param name="flag">確認するフラグ名</param>
/// <returns>フラグが設定されていればtrue、設定されていなければfalse</returns>
bool HasFlag(string flag)
{
return flags.Contains(flag);
}
/// <summary>
/// 指定したフラグが設定されているかどうかを確認し、ログに出力します。
/// </summary>
/// <param name="flag">確認するフラグ名</param>
void CheckAndLogFlag(string flag)
{
if (HasFlag(flag))
{
Debug.Log($"{flag} is set.");
}
else
{
Debug.Log($"{flag} is not set.");
}
}
void Start()
{
// フラグの設定
SetFlag("Flag1");
SetFlag("Flag2");
SetFlag("Flag1"); // 同じフラグを再度設定しても重複は無視される
// フラグの確認とログ出力
CheckAndLogFlag("Flag1");
CheckAndLogFlag("Flag3");
}
}
このサンプルコードでは、HashSetを使用してフラグを管理しています。
同じフラグを複数回設定しても、HashSetは重複を無視します。
また、HasFlagメソッドを使用して指定したフラグが設定されているかどうかを確認できます。
HashSetは高速な検索を提供し、一意なフラグを管理するために非常に適しています。
したがって、フラグ管理の場面でHashSetを使用することは一般的な選択肢、アプローチとなるでしょう。