アバターコンテキストメニュー(ACM)は、ユーザー同士のインタラクションを容易にします。ACMがゲームで有効になっている場合、ユーザーは別のユーザーのキャラクターに近づいてクリックすると、小さなメニューが表示され、いくつかのデフォルトオプションが表示されます。プレイヤーは友達リクエストを送ったり、プライベートチャットを開始したり、ユーザープロファイルを表示したり、手を振ったりすることができます。
ゲームでACMを有効にした後、以下の方法でACMをカスタマイズできます。
- 特定のユーザーのためにACMをプログラムで開閉する。
- ACMにカスタムオプションを追加し、既存のオプションを削除する。
- ユニークなユーザーインターフェースを作成するために、ACMの外観をカスタマイズする。
アバターコンテキストメニューを有効にする
アバターコンテキストメニューを有効にするには、StarterGui:SetCore()オプション「AvatarContextMenuEnabled」をLocalScriptの中で使用します。ACMは、他のユーザーをクリックするための事前定義された動作がないゲームで最適に使用されます。
以下のコードサンプルを使用して、LocalScript内でACMを有効にします。
-- "StarterPlayerScripts"内のLocalScriptで実行するlocal StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
ACMが有効になっているかどうかを検出する必要がある場合、次のコードを使用してACMの現在の状態を示すブール値を取得できます。
---ACMが現在有効かどうかを示すブール値を返します。StarterGui:GetCore(AvatarContextMenuEnabled)
ACMの開閉
有効にしたら、StarterGuiを使用してACMをプログラムで開閉できます。
ACMをプログラムで開くには、次のコードを使用します。
-- targetPlayerが有効なPlayerオブジェクトの場合はStarterGui:SetCoreを使用しますStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
ACMをプログラムで閉じるには、次のコードを使用します。
StarterGui:SetCore("AvatarContextMenuTarget", nil)
メニューオプション
スクリプトを通じて、アクションを追加および削除することができます。デフォルトでは、メニューに以下のオプションがあります。
| メニューオプション | 説明 |
|---|---|
| フレンド | 選択したユーザーに友達リクエストを送信します。 |
| チャット | 選択したユーザーとのプライベート会話をゲーム内チャットで開きます。 |
| 表示 | 選択したユーザーの外観を確認するためのウィンドウを開きます。 |
| 手を振る | 選択したユーザーに手を振るアニメーションを開始します。 |
ACMが開かれている場合、ユーザーはキャラクター選択キャラセル上で他のユーザーをスクロールして選択できます。キャラクターは、選択したキャラクターとの距離に基づいてソートされます。メニューは開かれたときのみ更新され、利用可能なユーザーのリストはスクロール時に繰り返されます。

メニューオプションを追加
ACMが有効になった後、ゲーム特有のアクションをACMに追加できます。たとえば、ゲームではトレードリクエストを許可したり、パーティに追加するオプションを提供したり、その他の特別なインタラクションを追加したりできます。
以下の例は、アバターコンテキストメニューにカスタムアクションを追加する方法を示しています。
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- "BindableEvent"に関数を接続する
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- この時点で、選択のサーバーへの通知用にRemoteFunctionでInvokeServer()を呼び出すことができる
print("ACMイベントが " .. player.Name .. " によって " .. targetPlayer.Name .. " で選択されました")
end
bindableEvent.Event:Connect(onCustomACMAction)
-- "AddAvatarContextMenuOption"を使ってSetCore()でACMオプションを追加する
local options = {"カスタムACMアクション", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
メニューオプションを削除
カスタムおよびデフォルトの「友達」、「チャット」、「表示」、「手を振る」オプションを、カスタムアクション名またはデフォルトのEnum.AvatarContextMenuOption列挙体を参照して削除できます。
次のコードを使用してデフォルトとカスタムのメニューオプションを削除します。
-- "カスタムACMアクション"オプションを削除しますStarterGui:SetCore("RemoveAvatarContextMenuOption", "カスタムACMアクション")-- AvatarContextMenuOption.Friend Enumを参照してデフォルトの"フレンド"オプションを削除しますStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
メニューの外観をカスタマイズ
アバターコンテキストメニューの外観を変更するには、StarterGui:SetCore()を呼び出し、「AvatarContextMenuTheme」オプションを使用して、メニュー外観を調整するためのパラメータと値のテーブルを提供します。
ACMユーザーインターフェースには、以下のセクションが含まれています。

A. 名前タグ:インタラクションしているキャラクターのユーザー名。
B. ボタフレーム:すべてのACMボタンを含む。
C. ボタン:デフォルトまたはカスタムACMアクション用の個々のボタン。
外観パラメータ
ACMのカスタマイズパラメータは以下の通りです。
背景
| BackgroundColor | ACMの全体的な背景用のColor3(背景画像を使用しない場合に最も有用)。 |
| BackgroundTransparency | ACMの全体的な背景用の透明度値(0–1)(背景画像を使用しない場合に最も有用)。 |
| BackgroundImage | ACM背景用の画像の有効なアセットID。 |
| BackgroundImageTransparency | 背景画像の透明度値(0–1)。 |
| BackgroundImageScaleType | 背景画像スケーリング用のEnum.ScaleType列挙体。 |
| BackgroundImageSliceCenter | Enum.ScaleType.Sliceに設定した場合の9スライス画像の中心を指定するRect。 |
名前タグ
ボタフレーム
| ButtonFrameColor | アクションボタンを含むセクション(フレーム)用のColor3。 |
| ButtonFrameTransparency | ボタンフレームセクションの透明度値(0–1)。 |
ボタン
| ButtonColor | ACMアクションボタンの背景用のColor3。 |
| ButtonTransparency | アクションボタンの背景色の透明度値(0–1)。 |
| ButtonHoverColor | アクションボタンの「ホバー」状態用のColor3。 |
| ButtonHoverTransparency | アクションボタンの「ホバー」色の透明度値(0–1)。 |
| ButtonUnderlineColor | 各アクションボタンを区別するための細い線用のColor3。 |
| ButtonImage | ボタンの背景用の画像の有効なアセットID。 |
| ButtonImageScaleType | ボタン画像スケーリング用のEnum.ScaleType列挙体。 |
| ButtonImageSliceCenter | Enum.ScaleType.Sliceに設定した場合の9スライス画像の中心を指定するRect。 |
テキスト
| Font | 名前タグとボタンテキスト用のEnum.Font列挙体値。 |
| TextColor | ACM内のすべてのテキスト用のColor3。 |
| TextScale | 各要素のデフォルトテキストサイズをスケーリングするための浮動小数点値。 |
様々な画像
| LeaveMenuImage | ACMクローズボタン用の画像のアセットID。 |
| ScrollLeftImage | キャロセルの「左にスクロール」ボタン用の画像のアセットID。 |
| ScrollRightImage | キャロセルの「右にスクロール」ボタン用の画像の有効なアセットID。 |
選択キャラクター
| SelectedCharacterIndicator | 選択されていることを示すためにキャラクターの頭の上に浮かぶMeshPart。 |
サイズと位置
| Size | ACMの全体的なサイズのためのUDim2。 |
| MinSize | ACMの最小サイズを指定するVector2。 |
| MaxSize | ACMの最大サイズを指定するVector2。 |
| AspectRatio | ACMの相対的な幅と高さを指定する浮動小数点値。 |
| AnchorPoint | ACMのAnchorPoint。 |
| OnScreenPosition | ACMの画面上の位置を指定するUDim2(開かれたときにTweenされる位置)。 |
| OffScreenPosition | ACMの画面外の位置を指定するUDim2(開閉時にTweenされる位置)。 |
カスタマイズの例
以下のコードサンプルは、基本的なパラメータを使用してACMテーマをカスタマイズします。
local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuTheme", {BackgroundImage = "",BackgroundTransparency = 0.5,BackgroundColor = Color3.fromRGB(111, 145, 242),NameTagColor = Color3.fromRGB(0, 0, 200),NameUnderlineColor = Color3.fromRGB(213, 233, 255),ButtonFrameColor = Color3.fromRGB(15, 24, 65),ButtonFrameTransparency = 0.2,ButtonUnderlineColor = Color3.fromRGB(213, 233, 255),Font = Enum.Font.SciFi})
