머천트 부스

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

MerchBooth 개발자 모듈은 경험 내에서 아바타 자산, 패스개발자 제품을 판매할 수 있게 합니다. 플레이어는 아이템을 탐색하고, 자신의 아바타에서 자산을 미리 보고, 아이템을 구매하고, 즉시 사용할 수 있습니다 — 모두 경험을 떠나지 않고 가능합니다. 이는 귀하의 경험을 수익화하고 다른 제작자의 아이템 판매와 관련된 40%의 제휴 수수료를 통해 수익을 얻는 데 도움이 될 수 있습니다.

모듈 사용

설치

경험에서 MerchBooth 모듈을 사용하려면:

  1. Studio의 메뉴 또는 탭 도구 모음에서 도구 상자를 열고 크리에이터 상점 탭을 선택합니다.

  2. 모델 정렬이 선택되었는지 확인한 후 카테고리모두 보기 버튼을 클릭합니다.

  3. 패키지 타일을 찾아 클릭합니다.

  4. Merch Booth 모듈을 찾아 클릭하거나 3D 뷰로 드래그 앤 드롭합니다.

  5. 탐색기 창에서 전체 MerchBooth 모델을 ReplicatedStorage로 이동합니다. 경험을 실행하면 모듈이 시작됩니다.

구성

모듈은 대부분의 사용 사례에 맞게 미리 구성되어 있지만 configure 함수를 통해 쉽게 사용자 지정할 수 있습니다. 예를 들어, 더 밝은 테마를 만들고 catalog 뷰의 왼쪽 상단 영역에 있는 기본 필터 버튼을 비활성화하려면:

  1. StarterPlayerScripts에서 새 LocalScript를 만들고 이름을 ConfigureMerchBooth로 바꿉니다.

  2. 새 스크립트에 다음 코드를 붙여넣습니다.

    LocalScript - ConfigureMerchBooth

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    MerchBooth.configure({
    backgroundColor = Color3.fromRGB(220, 210, 200),
    textSize = 17,
    textFont = Enum.Font.Fondamento,
    textColor = Color3.fromRGB(20, 20, 20),
    useFilters = false
    })

아이템 추가

머천트 부스에 머천트를 추가하지 않는다면? 다음 섹션에서는 머천트 부스에 아바타 자산, 패스, 및 개발자 제품을 추가하는 방법을 설명합니다.

아바타 자산

의류 및 액세서리와 같은 아이템은 아바타 상점의 항목 세부 정보 페이지에 있는 자산 ID를 통해 추가해야 합니다.

  1. ServerScriptService 내에 Script를 생성하고 다음 코드를 붙여넣습니다.

    Script - Add Avatar Assets

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 웹사이트 URL에서 아이템 자산 ID를 복사합니다 아바타 상점. 예를 들어, Roblox 야구 모자의 ID는 607702162입니다.

  3. 복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여넣습니다. 기본적으로 아이템은 카탈로그 보기에서 알파벳 순으로 나타나지만, setCatalogSort를 사용하여 정렬을 사용자 지정할 수 있습니다.

    Script - Add Avatar Assets

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    607702162, -- Roblox 야구 모자
    4819740796, -- Robox
    1374269, -- 고양이 귀
    11884330, -- 너드 안경
    10476359, -- 종이 모자
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end

패스

패스를 추가하려면 크리에이터 대시보드에서 패스 ID를 찾아야 합니다.

  1. ServerScriptService 내에 Script를 생성하고 다음 코드를 붙여넣습니다.

    Script - Add Passes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 크리에이터 대시보드로 이동하고 경험을 선택합니다.

  3. 왼쪽 열에서 수익화 아래 패스를 선택합니다.

  4. 패스의 썸네일 위로 마우스를 올리면 버튼을 클릭하고 컨텍스트 메뉴에서 자산 ID 복사를 선택합니다.

  5. 복사한 각 ID를 items 테이블의 쉼표로 구분된 목록에 붙여넣고 addItemAsync의 두 번째 매개변수로 Enum.InfoType.GamePass를 포함하여 아이템이 패스임을 나타냅니다. 기본적으로 아이템은 카탈로그 보기에서 알파벳 순으로 나타나지만, setCatalogSort를 통해 정렬을 사용자 지정할 수 있습니다.

    Script - Add Passes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    4343758, -- ColdFyre 갑옷
    28521575, -- 슬라임 방패
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
    end)
    if not success then
    warn(errorMessage)
    end
    end

개발자 제품

개발자 제품을 추가하려면 크리에이터 대시보드에서 제품 ID를 찾아야 합니다.

  1. ServerScriptService 내에 Script를 생성하고 다음 코드를 붙여넣습니다.

    Script - Add Developer Products

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 크리에이터 대시보드로 이동하고 경험을 선택합니다.

  3. 왼쪽 열에서 수익화 아래 개발자 제품을 선택합니다.

  4. 제품의 썸네일 위로 마우스를 올리면 버튼을 클릭하고 컨텍스트 메뉴에서 자산 ID 복사를 선택합니다.

  5. 복사한 각 ID를 items 테이블의 쉼표로 구분된 목록에 붙여넣고 addItemAsync의 두 번째 매개변수로 Enum.InfoType.Product를 포함하여 아이템이 개발자 제품임을 나타냅니다. 기본적으로 아이템은 카탈로그 보기에서 알파벳 순으로 나타나지만, setCatalogSort를 통해 정렬을 사용자 지정할 수 있습니다.

    Script - Add Developer Products

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- 마나 재충전
    1257880672, -- 치유 포션
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
    end)
    if not success then
    warn(errorMessage)
    end
    end

사용자 지정 카탈로그 버튼

기본적으로 오른쪽에 있는 카탈로그 버튼을 통해 플레이어는 언제든지 부스를 열 수 있습니다.

경우에 따라 이 버튼을 제거하고 자신의 버튼을 연결하는 것이 유용할 수 있습니다:

  1. 버튼에서 설명한 대로 새 버튼을 생성합니다.

  2. 버튼 객체의 자식으로 LocalScript를 생성합니다.

  3. 새 스크립트에 다음 코드를 붙여넣습니다.

    LocalScript - Custom Catalog Button

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- 기본 카탈로그 버튼 제거
    MerchBooth.toggleCatalogButton(false)
    -- 사용자 지정 버튼 연결
    script.Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

쇼핑 가능한 지역

경험에서 구매를 유도하는 유용한 방법은 플레이어가 특정 영역에 들어설 때 자동으로 머천트 부스를 표시하는 것입니다.

쇼핑 가능한 지역을 만들려면:

  1. 감지 영역을 포함하는 Anchored 블록을 생성합니다. 블록이 캐릭터 모델의 PrimaryPart와 충돌할 수 있을 만큼의 높이가 있는지 확인합니다(HumanoidRootPart가 기본값임).

    상점 카운터의 앞쪽에 플레이어가 접근할 때를 감지하는 블록
  2. 블록 속성의 태그 섹션에서 ShopRegion 태그를 블록에 적용하여 CollectionService가 이를 감지하도록 합니다.

  3. 블록의 Transparency를 최대값으로 설정하여 경험에서 플레이어에게 숨깁니다. 또한 다른 객체와 물리적으로 충돌하지 않도록 CanCollideCanQuery 속성을 비활성화합니다.

  4. StarterPlayerScripts 아래에 새 LocalScript를 삽입합니다.

  5. 새 스크립트에서 다음 코드를 붙여넣어 TouchedTouchEnded 이벤트를 사용하여 캐릭터가 영역에 들어오/나갈 때를 감지하고 openMerchBoothcloseMerchBooth를 호출하여 부스 GUI를 열고 닫습니다.

    LocalScript

    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local CollectionService = game:GetService("CollectionService")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- 기본 카탈로그 버튼 제거
    MerchBooth.toggleCatalogButton(false)
    local function setupRegion(region: BasePart)
    region.Touched:Connect(function(otherPart)
    local character = Players.LocalPlayer.Character
    if character and otherPart == character.PrimaryPart then
    MerchBooth.openMerchBooth()
    end
    end)
    region.TouchEnded:Connect(function(otherPart)
    local character = Players.LocalPlayer.Character
    if character and otherPart == character.PrimaryPart then
    MerchBooth.closeMerchBooth()
    end
    end)
    end
    -- 기존 태그가 있는 상점 지역 반복
    for _, region in CollectionService:GetTagged("ShopRegion") do
    setupRegion(region)
    end
    -- 스트리밍되지 않은 상점 지역 감지
    CollectionService:GetInstanceAddedSignal("ShopRegion"):Connect(setupRegion)

접근 가능 프롬프트

2D 카탈로그 뷰 대신, 경험 내 객체 위에 접근 가능 프롬프트를 추가할 수 있습니다. 이를 통해 플레이어는 3D 환경에서 아이템을 발견하고, 자신의 아바타에서 미리 보고, 구매하며, 즉시 장착할 수 있습니다. 자세한 내용은 addProximityButton을 참조하십시오.

장착 효과 변경

기본적으로 머천트 부스는 플레이어가 아이템을 장착할 때 일반적인 반짝임 효과를 보여줍니다. 효과를 변경하려면 configure 호출에서 particleEmitterTemplate을 자신의 ParticleEmitter 인스턴스로 설정합니다.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local myParticleEmitter = Instance.new("ParticleEmitter")
myParticleEmitter.SpreadAngle = Vector2.new(22, 22)
myParticleEmitter.Lifetime = NumberRange.new(0.5, 1.5)
myParticleEmitter.Shape = Enum.ParticleEmitterShape.Sphere
myParticleEmitter.Transparency = NumberSequence.new(0, 1)
myParticleEmitter.RotSpeed = NumberRange.new(200, 200)
MerchBooth.configure({
particleEmitterTemplate = myParticleEmitter
})

GUI 가시성

기본적으로 머천트 부스는 UI가 나타날 때 ScreenGuisCoreGuis를 모두 숨깁니다. 이는 채팅, 리더보드 등 Roblox에서 포함하는 다른 것들까지 해당됩니다. 이 동작을 비활성화하려면 configure 호출에서 hideOtherUisfalse로 설정하세요.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.configure({
hideOtherUis = false
})

캐릭터 이동

머천트 부스를 열고 있는 동안 캐릭터의 움직임을 방지하는 것이 유리할 수 있습니다. 이것은 configure 호출에서 disableCharacterMovementtrue로 설정하여 수행할 수 있습니다.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.configure({
disableCharacterMovement = true
})

API 참조

타입

아이템

머천트 부스의 아이템은 다음 키-값 쌍을 가진 사전으로 나타납니다. 아이템은 getItems 함수 또는 itemAdded 이벤트를 통해 수집할 수 있습니다.

유형설명
assetIdnumber아이템의 카탈로그 ID로, addItemAsync 함수에 전달됩니다.
titlestring카탈로그에 표시되는 아이템 제목입니다.
pricenumber아이템 가격(로벅스)
descriptionstring카탈로그에 표시되는 아이템 설명입니다.
assetTypestring아이템의 액세서리 유형을 나타내는 문자열입니다.
isOwnedbool현재 플레이어가 아이템을 소유하고 있는지 여부입니다.
creatorNamestring카탈로그에 표시되는 아이템 제작자입니다.
creatorTypeEnum.CreatorType아이템의 제작자 유형입니다.

열거형

MerchBooth.Controls

setControlKeyCodes와 함께 사용되어 머천트 부스와 상호작용하기 위해 사용하는 키 및 게임패드 버튼을 사용자화합니다.

이름요약
ProximityPrompts접근 가능 프롬프트가 구성된 경우 아이템 뷰를 열기 위한 키 및/또는 게임패드 버튼입니다.
OpenMerchBooth머천트 부스를 열기 위한 키 및/또는 게임패드 버튼입니다.
CloseMerchBooth머천트 부스를 닫기 위한 키 및/또는 게임패드 버튼입니다.
Filter카탈로그 보기의 왼쪽 상단 영역에 표시되는 기본 필터 드롭다운을 사용할 키 및/또는 게임패드 버튼입니다.
ViewItem특정 머천트 부스 아이템 뷰를 열기 위한 키 및/또는 게임패드 버튼입니다.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1
})

함수

configure

configure(config: table)

config 테이블 내의 다음 키/값을 통해 기본 클라이언트 측 구성 옵션을 재정의합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

설명기본값
backgroundColor창의 주요 배경색 (Color3).[0, 0, 0]
cornerRadius주 창의 모서리 반경 (UDim).(0, 16)
cornerRadiusSmall창 내의 요소를 위한 모서리 반경 (UDim).(0, 8)
textFont가격, 설명 및 기타 일반 정보를 위한 "주 텍스트"의 글꼴 (Enum.Font).Gotham
textSize주 텍스트 크기.14
textColor주 텍스트의 색상 (Color3).[255, 255, 255]
secondaryTextColor주 텍스트의 일부 변형에 사용되는 색상 (Color3).[153, 153, 158]
headerFont창 제목에 사용되는 헤더 텍스트의 글꼴 (Enum.Font).GothamMedium
headerTextSize창 제목에 사용되는 헤더 텍스트 크기.18
titleFont아이템 세부 정보 페이지의 아이템 이름에 사용되는 제목 텍스트의 글꼴 (Enum.Font).GothamBold
titleTextSize아이템 세부 정보 페이지의 아이템 이름에 사용되는 제목 텍스트 크기.28
buttonColor아이템 뷰에서의 기본 구매 버튼과 같은 클릭 가능한 상태의 더 큰 버튼의 배경색 (Color3).[255, 255, 255]
buttonTextColor아이템 뷰에서의 기본 구매 버튼과 같은 클릭 가능한 상태의 더 큰 버튼의 텍스트 색상 (Color3).[0, 0, 0]
secondaryButtonColor카탈로그 보기나 착용하기 버튼의 가격 버튼과 같은 더 작은 버튼의 배경색 (Color3).[34, 34, 34]
secondaryButtonTextColor카탈로그 보기나 착용하기 버튼의 가격 버튼과 같은 더 작은 버튼의 텍스트 색상 (Color3).[255, 255, 255]
inactiveButtonColor클릭할 수 없는 상태의 모든 버튼의 배경색 (Color3).[153, 153, 158]
inactiveButtonTextColor클릭할 수 없는 상태의 모든 버튼의 텍스트 색상 (Color3).[255, 255, 255]
particleEmitterTemplate장착 시 나타나고 재생되는 선택적 사용자 지정 ParticleEmitter 인스턴스입니다.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.configure({
backgroundColor = Color3.fromRGB(255, 255, 255),
textSize = 16,
textFont = Enum.Font.Roboto,
textColor = Color3.fromRGB(20, 20, 20),
hideOtherUis = false,
})

addItemAsync

addItemAsync(assetId: number, productType: Enum.InfoType, hideFromCatalog: boolean)

아이템을 머천트 부스에 비동기적으로 추가하여 경험에서 구매 가능하도록 합니다. assetId는 아이템의 자산 ID이며, productType은 아이템의 Enum.InfoType 열거형, hideFromCatalog는 카탈로그 보기에서 아이템을 숨기는 데 사용될 수 있습니다.

자세한 내용은 항목 추가를 참조하십시오. 이 기능은 자산게임 패스 또는 개발자 제품에서 약간의 사용법 차이가 있습니다.

Script - Add Avatar Assets

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
607702162, -- Roblox 야구 모자
4819740796, -- Robox
1374269, -- 고양이 귀
11884330, -- 너드 안경
10476359, -- 종이 모자
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Passes

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
4343758, -- ColdFyre 갑옷
28521575, -- 슬라임 방패
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Developer Products

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
1236602053, -- 마나 재충전
1257880672, -- 치유 포션
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
end)
if not success then
warn(errorMessage)
end
end

getItems

getItems(): table

현재 등록된 모든 아이템을 나타내는 사전을 반환합니다. 각 키는 아이템의 자산 ID 문자열이며, 각 키의 값은 아이템입니다. 이 함수는 Script에서만 호출할 수 있습니다.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local items = MerchBooth.getItems()
print(items)
end

removeItem

removeItem(assetId: number)

addItemAsync를 통해 이전에 추가된 아이템을 등록 취소하여 카탈로그 보기에서 타일을 제거하고 해당 아이템에 할당된 모든 접근 가능 프롬프트를 제거합니다. 이 함수는 Script에서만 호출할 수 있습니다.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- 잠시 후 아이템 제거
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

addProximityButton(adornee: BasePart|Model|Attachment, assetId: number)

아이템의 구매 뷰를 표시하도록 트리거하는 접근 가능 프롬프트를 주어진 adornee 위에 추가합니다. 이는 플레이어가 3D 환경에서 아이템을 발견하도록 유도하는 2D 카탈로그 뷰의 대안으로 사용할 수 있습니다.

아이템은 먼저 addItemAsync를 통해 추가되어야 하며, 그러면 접근 가능 버튼을 해당 아이템에 할당할 수 있습니다. 접근 가능 프롬프트를 제거하려면 removeProximityButton를 참조하십시오.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = Workspace:FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
end

removeProximityButton

removeProximityButton(adornee: BasePart|Model|Attachment)

addProximityButton를 통해 생성된 접근 가능 프롬프트를 제거합니다. 이 함수는 Script에서만 호출할 수 있습니다.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = Workspace:FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
-- 잠시 후 프롬프트 제거
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

카탈로그 보기에서 사용할 정렬 함수인 sortFunction을 설정합니다. 제공된 정렬 함수는 price 또는 title과 같은 아이템 정보를 기반으로 논리를 사용할 수 있습니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

카탈로그 정렬을 위한 몇 가지 예시입니다.

Price Low-to-High

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price < b.price
end)
Price High-to-Low

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price > b.price
end)
Price Low-to-High & Alphabetical

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return if a.price == b.price then a.title < b.title else a.price < b.price
end)

setControlKeyCodes

setControlKeyCodes(control: MerchBooth.Controls, keyCodes: table)

머천트 부스와 상호작용하기 위해 사용하는 키 및 버튼 값을 설정합니다. 첫 번째 매개변수는 MerchBooth.Controls 열거형이어야 하며, 두 번째 매개변수는 해당 프로그래폰으로 매핑된 keyboard 및/또는 gamepad 키와 함께 Enum.KeyCode 열거형을 포함하는 테이블입니다.

열거형 (control)기본 keyCodes 키/값
MerchBooth.Controls.ProximityPromptskeyboard = Enum.KeyCode.E
gamepad = Enum.KeyCode.ButtonY
MerchBooth.Controls.OpenMerchBoothgamepad = Enum.KeyCode.ButtonY
MerchBooth.Controls.CloseMerchBoothgamepad = Enum.KeyCode.ButtonB
MerchBooth.Controls.Filtergamepad = Enum.KeyCode.ButtonX
MerchBooth.Controls.ViewItemgamepad = Enum.KeyCode.ButtonA
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1,
})

openMerchBooth

openMerchBooth()

머천트 부스 창을 엽니다 (닫힌 경우) 카탈로그 보기로 이동합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
warn(errorMessage)
end
MerchBooth.openMerchBooth()

openItemView

openItemView(itemId: number)

주어진 itemId의 단일 아이템 뷰로 이동하여 현재 닫혀 있다면 머천트 부스 창을 엽니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
MerchBooth.openItemView(4819740796)
end

toggleCatalogButton

toggleCatalogButton(enabled: boolean)

화면 오른쪽의 카탈로그 버튼을 켜고 끕니다. 이것은 사용자 지정 버튼을 구현하거나 머천트 부스의 표시를 지역 또는 접근 가능 프롬프트로 제한할 때 유용합니다. LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.toggleCatalogButton(false)

isMerchBoothOpen

isMerchBoothOpen(): Tuple

카탈로그 또는 아이템 뷰가 열려 있으면 true를 반환합니다. 아이템 뷰가 열려 있는 경우 두 번째 값으로 해당 아이템의 자산 ID를 반환합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
MerchBooth.openItemView(4819740796)
local isOpen, itemId = MerchBooth.isMerchBoothOpen()
print(isOpen, itemId)
end

closeMerchBooth

closeMerchBooth()

머천트 부스 창을 닫습니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.closeMerchBooth()

isMerchBoothEnabled

isMerchBoothEnabled(): boolean

이 함수는 setEnabled와 함께 사용되어 머천트 부스가 현재 활성화되어 있는지 여부를 확인할 수 있습니다. LocalScript에서만 호출할 수 있습니다.

setEnabled

setEnabled(enabled: boolean)

머천트 부스를 활성화하거나 비활성화합니다. 비활성화할 경우, 이 함수는 전체 UI를 제거하며, 접근 가능 프롬프트도 제거하고 모든 이벤트를 분리합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local isEnabled = MerchBooth.isMerchBoothEnabled()
if isEnabled then
MerchBooth.setEnabled(false)
end

이벤트

itemAdded

addItemAsync를 통해 아이템이 추가될 때 발생합니다. 이 이벤트는 Script에서만 연결할 수 있습니다.

매개변수
assetId: number아이템 자산 ID입니다.
itemInfo: tableprice 또는 title과 같은 아이템 정보의 사전입니다.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("자산 ID가", assetId인 아이템이 추가되었습니다.")
print(itemInfo)
end)

itemRemoved

removeItem을 통해 아이템이 제거될 때 발생합니다. 이 이벤트는 Script에서만 연결할 수 있습니다.

매개변수
assetId: number아이템 자산 ID입니다.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemRemoved:Connect(function(assetId)
print("자산 ID가", assetId인 아이템이 제거되었습니다.")
end)

merchBoothOpened

카탈로그 또는 아이템 세부 정보 보기가 열릴 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothOpened:Connect(function()
print("부스 보기 열림")
end)

merchBoothClosed

카탈로그 또는 아이템 세부 정보 보기가 닫힐 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothClosed:Connect(function()
print("부스 보기 닫힘")
end)

catalogViewOpened

카탈로그 보기가 열릴 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewOpened:Connect(function()
print("카탈로그 보기 열림")
end)

catalogViewClosed

카탈로그 보기가 닫힐 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewClosed:Connect(function()
print("카탈로그 보기 닫힘")
end)

itemViewOpened

아이템 세부 정보 보기가 열릴 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewOpened:Connect(function()
print("아이템 보기 열림")
end)

itemViewClosed

아이템 세부 정보 보기가 닫힐 때 발생합니다.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("아이템 보기 닫힘")
end)
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.