아바타 컨텍스트 메뉴(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 열기 및 닫기
한 번 활성화되면 ACM을 프로그래밍 방식으로 StarterGui로 열고 닫을 수 있습니다.
ACM을 프로그래밍 방식으로 열기 위해 아래 코드를 사용하세요:
-- targetPlayer가 유효한 Player 객체일 때 StarterGui:SetCore 사용StarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
ACM을 프로그래밍 방식으로 닫으려면 아래 코드를 사용하세요:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
메뉴 옵션
스크립트를 통해 동작을 추가하고 제거할 수 있습니다. 기본적으로 메뉴에는 다음 옵션이 있습니다:
| 메뉴 옵션 | 설명 |
|---|---|
| 친구 | 선택한 사용자에게 친구 요청을 보냅니다. |
| 채팅 | 선택한 사용자와 인게임 채팅에서 비공식 대화를 시작합니다. |
| 보기 | 선택한 사용자의 외모를 검사하는 창을 엽니다. |
| 손 흔들기 | 선택한 사용자에게 손 흔들기 애니메이션을 시작합니다. |
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)
메뉴 옵션 제거
사용자 정의 및 기본 친구 추가, 채팅, 보기, 손 흔들기 옵션을 ACM에서 제거할 수 있습니다. 사용자 정의 Action 이름이나 기본 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입니다. |
이름 태그
| NameTagColor | 상호작용하고 있는 플레이어를 표시하는 바의 색상을 위해 사용할 Color3입니다. |
| NameUnderlineColor | 이름 태그와 동작 버튼 사이의 얇은 선의 색상을 위해 사용할 Color3입니다. |
버튼 프레임
| 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입니다 (열릴 때 애니메이션하는 위치). |
| OffScreenPosition | ACM의 화면 외 위치를 지정하는 UDim2입니다 (열리고 닫힐 때 애니메이션하는 위치). |
예제 사용자화
다음 코드 샘플은 몇 가지 기본 매개변수를 사용하여 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})
