フレンド管理メニューを追加する - フレンドを管理する - (Unity モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
メニューの内容
このチュートリアルでは、ブロックされたプレイヤーを表示し、フレンド解除、ブロック、ブロック解除のアクションボタンを使用するためのユーザーインターフェース (UI) を準備する方法を学びます。UI メニューは リソース セクションで利用可能で、以下のファイルで構成されています:
- BlockedPlayersMenu_Starter: ブロックされたプレイヤーリストを表示する UI メニュー。
- C# ファイル:
/Assets/Resources/Modules/Social/ManagingFriends/Scripts/UI/BlockedPlayersMenu_Starter.cs - Prefab ファイル:
/Assets/Resources/Modules/Social/ManagingFriends/Prefabs/BlockedPlayersMenu_Starter.prefab
- C# ファイル:
- BlockedPlayerEntry: ブロックされたフレンド情報とブロック解除ボタンを表示する UI コンポーネント。
- C# ファイル:
/Assets/Resources/Modules/Social/ManagingFriends/Scripts/UI/BlockedPlayerEntry.cs - Prefab ファイル:
/Assets/Resources/Modules/Social/ManagingFriends/Prefabs/BlockedPlayerEntry.prefab
- C# ファイル:
- FriendDetailsMenu_Starter: 個別のフレンド情報を表示する UI メニュー。
- C# ファイル:
/Assets/Resources/Modules/Social/FriendsEssentials/Scripts/UI/FriendDetailsMenu_Starter.cs - Prefab ファイル:
/Assets/Resources/Modules/Social/FriendsEssentials/Prefabs/FriendDetailsMenu_Starter.prefab
- C# ファイル:
ブロックされたプレイヤーメニュー
以下は BlockedPlayersMenu_Starter.prefab のプレビューです。このメニューはブロックされたプレイヤーリストを表示するために使用されます。

BlockedPlayersMenu_Starter.cs スクリプトには、UI 参照を保存するための以下のフィールドがあります:
[Header("Blocked Players Component")]
[SerializeField] private GameObject playerEntryPrefab;
[Header("Menu Components")]
[SerializeField] private AccelByteWarsWidgetSwitcher widgetSwitcher;
[SerializeField] private RectTransform resultContentPanel;
widgetSwitcher コンポーネントは、デフォルトビュー、読み込み状態、空の結果状態、エラー状態など、メニューを異なる状態間で切り替えるために使用されます。resultContentPanel は、playerEntryPrefab を使用してエントリをインスタンス化することで、フレンドリクエストリストを表示するために使用されます。
また、現在表示されているリストをクリアする関数もあります:
private void ClearBlockedPlayers()
{
resultContentPanel.DestroyAllChildren();
blockedPlayers.Clear();
}
フレンド詳細メニュー
以下は FriendDetailsMenu_Starter.prefab のプレビューです。この prefab は、表示名、アバター、ブロックボタン、フレンド解除ボタンなどのフレンド情報を表示します。

FriendDetailsMenu_Starter.cs スクリプトには、UI 参照を保存するための以下のフィールドがあります:
[Header("Friend Details"), SerializeField] private Image friendImage;
[SerializeField] private TMP_Text friendDisplayName;
[Header("Friend Components"), SerializeField] private Button blockButton;
[SerializeField] private Button unfriendButton;
public Image FriendImage => friendImage;
public TMP_Text FriendDisplayName => friendDisplayName;
public string UserId { get; set; } = string.Empty;
ブロックされたプレイヤーエントリ
以下は BlockedPlayerEntry.prefab のプレビューです。この prefab は、表示名、アバター、招待送信ボタンなどのフレンド情報を表示します。

BlockedPlayerEntry.cs スクリプトには、他のスクリプトが表示内容を操作できるようにするための以下のパブリックゲッターとプロパティがあります:
public string UserId { get; set; } = string.Empty;
public Image FriendImage => friendImage;
public TMP_Text FriendName => friendName;
public Button UnblockButton => unblockButton;
UI の準備
-
BlockedPlayersMenu_Starter.csファイルを開き、後で実装する以下の関数を見つけます:-
LoadBlockedPlayers(): この関数を実装して、ブロックされたプレイヤーのリストを取得します。private void LoadBlockedPlayers()
{
// TODO: Implement Load Blocked Players function here.
BytewarsLogger.LogWarning("The LoadBlockedPlayers method is not implemented yet");
} -
OnLoadBlockedPlayersCompleted(): この関数をLoadBlockedPlayers()のレスポンスとして実装します。private void OnLoadBlockedPlayersCompleted(Result<BlockedList> result)
{
// TODO: Implement Load Blocked Players callback functions here.
BytewarsLogger.LogWarning("The OnLoadBlockedPlayersCompleted method is not implemented yet");
}
-
-
FriendDetailsMenu_Starter.csを開き、以下の関数を見つけます:-
BlockPlayer(): この関数を実装して、他のプレイヤーをブロックできるようにします。private void BlockPlayer()
{
// TODO: Implement Block Player function here.
BytewarsLogger.LogWarning("BlockPlayer is not yet implemented.");
} -
OnBlockPlayerComplete(): これをBlockPlayer()関数のレスポンス関数として実装します。private void OnBlockPlayerComplete(Result<BlockPlayerResponse> result)
{
// TODO: Implement OnBlockPlayerComplete function here.
BytewarsLogger.LogWarning("OnBlockPlayerComplete is not yet implemented.");
} -
UnblockPlayer(): この関数を実装して、他のプレイヤーのブロックを解除できるようにします。private void UnblockPlayer()
{
// TODO: Implement Unblock Player function here.
BytewarsLogger.LogWarning("UnblockPlayer is not yet implemented.");
} -
OnUnblockPlayerComplete(): これをUnblockPlayer()関数のレスポンス関数として実装します。private void OnUnblockPlayerComplete(Result<BlockPlayerResponse> result)
{
// TODO: Implement OnUnblockPlayerComplete function here.
BytewarsLogger.LogWarning("OnUnblockPlayerComplete is not yet implemented.");
} -
Unfriend(): この関数を実装して、他のプレイヤーとのフレンド関係を解除できるようにします。private void Unfriend()
{
// TODO: Implement Unfriend function here.
BytewarsLogger.LogWarning("Unfriend is not yet implemented.");
} -
OnUnfriendCompleted(): これをUnfriend()関数のレスポンス関数として実装します。private void OnUnfriendCompleted(Result result)
{
// TODO: Implement OnUnfriendCompleted function here.
BytewarsLogger.LogWarning("OnUnfriendCompleted is not yet implemented.");
}
-
-
Unity Editor で、
Assets/Resources/Modules/Social/ManagingFriendsに移動します。そこに ManagingFriendsAssetConfig というアセット設定があります。それを開き、Inspector でIs Starter Activeを有効にします。これにより、フレンド管理の Starter ファイルがアクティブになります。 -
Editor でゲームをプレイします。実装が成功すると、フレンド管理メニューに移動でき、Console に関連するログが表示されます。
-
Social > Block Players の場合、以下のログが表示されます:
[BlockedPlayersMenu_Starter] [LoadBlockedPlayers] - The LoadBlockedPlayers method is not implemented yet -
Social > Friends > [任意のフレンドエントリをクリック] > Block の場合、以下のログが表示されます:
[FriendDetailsMenu_Starter] [Unfriend] - Unfriend is not yet implemented. -
Social > Friends > [任意のフレンドエントリをクリック] > Unfriend の場合、以下のログが表示されます:
[FriendDetailsMenu_Starter] [BlockPlayer] - BlockPlayer is not yet implemented.
-
リソース
- このチュートリアルで使用されるファイルは、Unity Byte Wars GitHub リポジトリで利用可能です。
- Assets/Resources/Modules/Social/ManagingFriends/ManagingFriendsAssetConfig.asset
- Assets/Resources/Modules/Social/ManagingFriends/Prefabs/BlockedPlayersMenu_Starter.prefab
- Assets/Resources/Modules/Social/ManagingFriends/Scripts/UI/BlockedPlayersMenu_Starter.cs
- Assets/Resources/Modules/Social/ManagingFriends/Prefabs/BlockedPlayerEntry.prefab
- Assets/Resources/Modules/Social/ManagingFriends/Scripts/UI/BlockedPlayerEntry.cs
- Assets/Resources/Modules/Social/FriendsEssentials/Prefabs/FriendDetailsMenu_Starter.prefab
- Assets/Resources/Modules/Social/FriendsEssentials/Scripts/UI/FriendDetailsMenu_Starter.cs