メインコンテンツまでスキップ

フレンドリストメニューを追加する - フレンドリストを表示する - (Unity モジュール)

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

メニューの内容

このチュートリアルでは、プレイヤーのフレンドリストを表示するために使用するユーザーインターフェース (UI) を準備する方法を学びます。以下のファイルが必要です:

  • FriendsMenu_Starter: フレンドのリストを表示する UI メニュー。
    • C# ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Scripts/UI/FriendsMenu_Starter.cs
    • Prefab ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Prefabs/FriendsMenu_Starter.prefab
  • FriendDetailsMenu_Starter: 個々のフレンド情報を表示する UI メニュー。
    • C# ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Scripts/UI/FriendDetailsMenu_Starter.cs
    • Prefab ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Prefabs/FriendDetailsMenu_Starter.prefab
  • FriendEntry: 表示名やアバターなどのフレンド情報を表示する UI コンポーネント。
    • C# ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Scripts/UI/FriendEntry.cs
    • Prefab ファイル: Assets/Resources/Modules/Social/FriendsEssentials/Prefabs/FriendEntry.prefab

これらのファイルへのリンクについては、リソース セクションを参照してください。

フレンドメニュー

以下は FriendsMenu_Starter.prefab のプレビューです。このメニューはフレンドリストを表示するために使用されます。

Friends Menu Unity Byte Wars friend list

この prefab で使用されるコンポーネントは、FriendsMenu_Starter.cs スクリプトで宣言されています。以下は、prefab で使用されるコンポーネントの宣言です:

[Header("Friends Component")]
[SerializeField] private GameObject friendEntryPrefab;

[Header("Menu Components")]
[SerializeField] private AccelByteWarsWidgetSwitcher widgetSwitcher;
[SerializeField] private RectTransform resultContentPanel;
[SerializeField] private RectTransform resultColumnLeftPanel;
[SerializeField] private RectTransform resultColumnRightPanel;

widgetSwitcher コンポーネントは、デフォルトビュー、ローディング状態、空の結果状態、エラー状態など、メニューを異なる状態間で切り替えるために使用されます。resultContentPanel は、friendEntryPrefab を使用してエントリをインスタンス化することで、フレンドリクエストリストを表示するために使用されます。

結果コンテンツパネルは 2 つの列に分割されています。左列が右列よりも優先的に埋められます。エントリコンポーネントをインスタンス化する関数は以下のように定義されています:

private GameObject InstantiateToColumn(GameObject playerEntryPrefab)
{
bool shouldPlaceOnRightPanel = resultColumnLeftPanel.childCount > resultColumnRightPanel.childCount;

return Instantiate(playerEntryPrefab, shouldPlaceOnRightPanel ? resultColumnRightPanel : resultColumnLeftPanel);
}

フレンドリストをクリアする関数は以下のように定義されています:

private void ClearFriendList()
{
resultColumnLeftPanel.DestroyAllChildren();
resultColumnRightPanel.DestroyAllChildren();

friendEntries.Clear();
}

フレンドリストを保存する変数:

private readonly Dictionary<string, GameObject> friendEntries = new();

フレンド詳細メニュー

以下は FriendDetailsMenu_Starter.prefab のプレビューです。この prefab には、個々のフレンド情報を表示するコンポーネントと、フレンドと対話するためのいくつかのボタンが含まれています。

Friend Details Menu Canvas Unity Byte Wars friend list

このスクリプトには、他のオブジェクトが表示される情報を変更できるようにする以下のパブリックゲッターと、現在表示しているユーザーを決定するユーザー ID プロパティがあります。

public Image FriendImage => friendImage;
public TMP_Text FriendDisplayName => friendDisplayName;
public TMP_Text FriendPresence => friendPresence;

public string UserId { get; set; } = string.Empty;

フレンドエントリ

以下は、表示名、アバター、ユーザープレゼンスなどのフレンドエントリ情報を表示する FriendEntry.prefab のプレビューです。

Friend Component Unity Byte Wars friend list

FriendEntry.prefab には、画像と名前の UI 参照を保持する FriendEntry.cs というスクリプトコンポーネントがあります。このスクリプトには、他のオブジェクトが表示される情報を変更できるようにする以下のパブリックゲッターと、このコンポーネントによって現在表示されているユーザーを決定するユーザー ID プロパティがあります。

public string UserId { get; set; } = string.Empty;

public Image FriendImage => friendImage;
public TMP_Text FriendName => friendName;

UI を準備する

フレンドリストを表示するための UI メニューを準備するには、以下の手順に従います:

  1. FriendsMenu_Starter.cs ファイルを開きます。LoadFriendList() という関数があります。この関数は、フレンドリストをロードするロジックを実装する場所です。

    private void LoadFriendList()
    {
    // TODO: Implement Load Friend List function here.
    BytewarsLogger.LogWarning("The LoadFriendList method is not implemented yet");
    }
  2. OnLoadFriendListCompleted() 関数を見つけます。これは、LoadFriendList の結果を受信したときのロジックを実装する場所です。

    private void OnLoadFriendListCompleted(Result<Friends> result)
    {
    // TODO: Implement Load Friend List callback functions here.
    BytewarsLogger.LogWarning("The OnLoadFriendListCompleted method is not implemented yet");
    }
  3. OnEnable() 関数を見つけて、以下のように LoadFriendList() 関数の呼び出しを追加します。この関数は、UI が有効になったときに呼び出されます。

    private void OnEnable()
    {
    // TODO: Define Module Wrappers and Load Friends here.

    LoadFriendList();
    }
  4. エディターでゲームをプレイし、Social > Friends に移動します。ここまでの実装が成功していれば、コンソールに以下のメッセージが表示されるはずです:

    [FriendsMenu_Starter] [LoadFriendList] [Warning] [87] - The LoadFriendList method is not implemented yet

リソース