배지

배지는 플레이어가 체험 내에서 어려운 목표를 완료하거나 특정 시간 동안 플레이하는 등 어떤 목표를 달성했을 때 부여할 수 있는 특별한 상입니다. 플레이어가 배지를 받으면 이는 즉시 플레이어 인벤토리의 배지 카테고리에 표시돼요.

배지 만들기

배지에 사용할 이미지를 만들 때는 다음과 같은 요건을 고려하세요.

  • 512×512 픽셀의 템플릿을 사용해야 합니다.
  • 이미지를 .jpg, .png, .tga 또는 .bmp 형식으로 저장해야 합니다.
  • 업로드 과정에서 최종 배지를 원형 이미지로 다듬어 잘라내기 때문에 중요한 세부 정보를 원형 바깥에 포함하시면 안 됩니다.
좋은 원형 다듬기
나쁜 원형 다듬기

소유하신 각 체험에 대해 24시간 동안(GMT) 최대 5개의 배지를 무료로 만드실 수 있습니다. 24시간 동안 더 많은 배지를 만들고 싶은 경우, 배지 1개를 추가할 때마다 100 Robux의 비용이 들어요.

배지를 만들려면 다음과 같이 해보세요.

  1. 크리에이터 대시보드로 이동합니다.

  2. 만들려는 배지가 해당되는 체험을 클릭합니다. 체험의 개요 페이지가 나타나요.

  3. 왼쪽의 탐색 메뉴에서 관련 아이템을 선택합니다. 기본적으로 배지 섹션이 선택된 상태로 해당 체험에 대한 관련 아이템 페이지가 나타납니다.

  4. 배지 만들기 버튼을 클릭합니다. 배지 만들기 페이지가 나타나요.

  5. 이미지 업로드 버튼을 클릭합니다. 파일 브라우저가 표시됩니다.

  6. 아이콘으로 표시할 이미지를 선택한 다음 '열기(Open)' 버튼을 클릭합니다.

  7. 다음의 필드에 정보를 입력합니다.

    • 이름: 배지의 제목입니다.
    • 설명: 배지를 받기 위해 플레이어가 어떤 것을 할 수 있는지에 대한 설명입니다.
  8. 배지 만들기 버튼을 클릭하거나, 24시간 동안 이미 5개 배지를 만드신 경우에는 100 Robux로 구매 버튼을 클릭합니다. 관련 아이템 페이지의 배지 섹션에는 물론 체험 기본 페이지의 배지 섹션에도 배지가 표시됩니다.

배지 ID 찾기

배지 ID는 배지의 고유한 식별자입니다. 배지에 대한 스크립트를 작성할 때 이 ID가 필요해요.

배지 ID를 찾으려면 다음과 같이 해보세요.

  1. 체험의 관련 아이템 페이지에서 배지 섹션으로 이동합니다.

  2. 배지 섬네일 위로 마우스를 가져가 버튼을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.

  3. 애셋 ID 복사를 선택합니다. 배지 ID가 클립보드에 복사됩니다.

배지에 대한 스크립트 작성

스크립트 작성을 통해 체험에서 배지를 부여하고 추적할 수 있습니다. 배지 스크립트 작성에 대한 일반적인 사용 사례로는 배지 수여, 체험에서 플레이어가 이전에 배지를 받았는지 확인, 배지 정보 확인 등이 있어요.

배지 수여

서버측 **Script**에서 BadgeService:AwardBadge() 함수를 호출하여 체험 전체에서 플레이어들에게 배지를 수여하실 수 있어요. **BadgeService:GetBadgeInfoAsync()**에서 배지의 속성을 반환하는데, 여기에는 해당 배지를 플레이어에게 수여할 수 있는지 여부를 확인하는 **IsEnabled**도 포함되어 있습니다. 배지를 수여하기 전에 이것을 호출하여 확인하셔야 해요.

다음의 스크립트에는 플레이어에게 배지를 수여하기 위한 안전한 함수의 예제가 나와 있습니다.


local BadgeService = game:GetService("BadgeService")
local function awardBadge(player, badgeId)
-- Fetch Badge information
local success, badgeInfo = pcall(BadgeService.GetBadgeInfoAsync, BadgeService, badgeId)
if success then
-- Confirm that badge can be awarded
if badgeInfo.IsEnabled then
-- Award badge
local awarded, errorMessage = pcall(BadgeService.AwardBadge, BadgeService, player.UserId, badgeId)
if not awarded then
warn("Error while awarding Badge:", errorMessage)
end
end
else
warn("Error while fetching Badge info!")
end
end

획득한 배지 확인하기

다음의 스크립트는 플레이어가 체험에 입장할 때를 확인한 다음, badgeID 변수의 일치하는 ID 세트를 사용하여 이 플레이어가 배지를 소유하고 있는지 확인합니다.


local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local BADGE_ID = 00000000 -- Change this to your Badge ID
local function onPlayerAdded(player)
-- Check if the player has the Badge
local success, hasBadge = pcall(BadgeService.UserHasBadgeAsync, BadgeService, player.UserId, badgeID)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player has Badge!")
return
end
if hasBadge then
-- Handle player's Badge ownership as needed
end
end
-- Connect "PlayerAdded" events to the "onPlayerAdded()" function
Players.PlayerAdded:Connect(onPlayerAdded)

배지 정보 확인하기

설명이나 아이콘 애셋 ID 등 배지에 대한 정보를 확인하려면 badge ID와 함께 BadgeService:GetBadgeInfoAsync() 함수를 사용하세요. 예를 들면 다음과 같습니다.


local BadgeService = game:GetService("BadgeService")
local BADGE_ID = 00000000 -- Change this to your Badge ID
-- Fetch Badge information
local success, result = pcall(BadgeService.GetBadgeInfoAsync, BadgeService, BADGE_ID)
print(success, result)
-- Output the information
if success then
print("Badge:", result.Name)
print("Enabled:", result.IsEnabled)
print("Description:", result.Description)
print("Icon:", "rbxassetid://" .. result.IconImageId)
else
warn("Error while fetching Badge info:", result)
end