ScavengerHunt개발자 모듈은 플레이어에게 경험을 탐색하는 내재적으로 게임화된 방법을 제공하며, 플레이어는 플레이스전체에 조직적으로 도입됩니다. 플레이어 진행은 지속되므로 스캐버 사냥은 세션 간에 계속될 수 있습니다.
모듈 사용
설치
경험에서 ScavengerHunt 모듈을 사용하려면:
모델 정렬을 선택한 다음 모두 보기 버튼을 클릭하여 범주 에 대한 전체 보기를 클릭하십시오.
찾아 클릭하십시오 개발자 모듈 타일.
보물찾기 모듈을 찾아 클릭하거나 3D 뷰에 드래그 앤 드롭하세요.
탐색기 창에서 전체 ScavengerHunt 모델을 ServerScriptService 로 이동합니다. 경험을 실행할 때 모듈은 다양한 서비스에 배포되고 실행을 시작합니다.
토큰 사용
탐색기 모듈은 플레이어가 검색하고 수집하는 항목으로 토큰 을 사용합니다. 모듈은 3D 세계에 배치할 수 있는 하나의 토큰 모델을 가지고 있습니다.
모듈의 메인 폴더 내의 토큰1 메쉬를 찾습니다.
이동 토큰1 위로 작업 공간 계층의 최상위 레벨로 이동하고 원하는 위치에 배치합니다.
토큰에 고유한 이름 을 지정하십시오. 이 이름은 모듈이 각 플레이어가 수집한 토큰을 추적하는 방법입니다.
더 많은 토큰을 추가하려면 기존 토큰을 복제하고 고유한 이름을 지정하십시오.
번들된 메쉬 토큰을 사용하지 않으려면, Model 또는 BasePart 이 모든 경우에 적용됩니다. 다음 크리터리를 충족하면:
개체에는 CollectionService 태그가 있습니다 ScavengerHuntPart . 원하는 경우 모듈이 사용하는 CollectionService 태그 이름을 변경하여 서버를 호출하는 다른 값을 설정하여 1>토큰 태그1> 를 변경할 수 있습니다.
개체에는 토큰을 수집할 때 표시할 "맛" 인스턴스 세트가 포함되어 있습니다. StringValue
지역 사용
지역은 플레이어가 입력한 후 "수집"으로 표시된 큰 영역과 약간 다릅니다. 또한, 플레이어가 영역을 떠나면 맛 텍스트 모달이 자동으로 닫히고 영역이 작업 공간에서 제거됩니다.
블록 또는 구와 같은 고정된 부품을 지역 주위에 생성하십시오. 모듈은 플레이어가 지역과 충돌하지 않도록 런타임에 CanCollide 속성을 자동으로 비활성화합니다.
이름을 입력하십시오 고유한 이름 . 이 이름은 모듈이 각 플레이어가 입력한 지역을 추적하는 방법입니다.
자식 StringValue 인스턴스를 포함하여 영역을 입력할 때 표시하는 "flavor text" 세트를 표시합니다.
구성
모듈은 대부분의 사용 사례에 대해 미리 구성되지만, 쉽게 사용자 정의할 수 있습니다. 예를 들어, 토큰 회전 속도를 변경하고 모달 정보 메시지를 사용자 정의하려면:
In StarterPlayerScripts , create a new LocalScript and rename it to ConfigureScavengerHunt .
다음 코드를 새 스크립트에 붙여넣습니다.
로컬 스크립트 - 스캐버너 사냥 구성local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,})
컬렉션 이벤트
플레이어가 토큰을 수집하거나 지역에 입장할 때마다, 수집 이벤트가 발생합니다. 이 이벤트는 서버 사이트 Script 에서 듣기 수신기를 사용하여 수신할 수 있으며, 응답하기 위해 서버 사이드에서 Player 와 연결된 함수
마찬가지로, 플레이어가 모든 토큰을 수집하거나 모든 표시된 영역을 입력하면 모두 수집 이벤트가 발생하고 연결된 함수가 연결된 1> Class.Player1> 을 수신합니다.
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
사용자 정의 GUI
이 모듈에서는 기본 GUI를 사용자 정의하는 여러 옵션을 제공하지만, 대신 사용자 정의된 GUI 요소를 표시하도록 선택할 수 있습니다.
useCustomModals 를 true 함수에 설정하면 showInfoModal 이벤트가 플레이어가 토큰 트래커를 활성화할 때마다 발생합니다. 마찬가지로 1>showCompleteModal1> 이벤트는 플레이어
로컬 스크립트
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- 사용자 정의 정보 모달 표시
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- 사용자 정의 완료 모달 표시
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
버튼 표시
기본적으로 정보 모달 또는 완료 모달이 나타나면 ScreenGuis (플레이어 목록을 제외하고) 모든 CoreGuis 및 Class.CoreGui|CoreGuis (플레이어 목록을 제외하고)
로컬 스크립트
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- 숨겨지지 않는 화면 GUI 생성
local specialGuiInstance = Instance.new("ScreenGui")
-- 보물찾기 GUI 위에 있는 화면 GUI 그리기
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- GUI에 텍스트 레이블 추가
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Remains visible when displaying modals"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- 모든 개발자 정의 화면 GUI 숨기기
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "ScavengerHunt" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- 특정 코어 GUI 숨기기
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- 숨겨진 모든 개발자 정의 화면 GUI 표시
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- 숨겨진 특정 코어 GUI 표시
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
API 참조
함수
구성 클라이언트
Class.LocalScript 테이블의 다음 키/값을 통해 기본 클라이언트 사이드 구성 옵션을 재정의합니다. 이 함수는 LocalScript 에서만 호출할 수 있습니다.
키 | 설명 | 기본 |
---|---|---|
autoDismissTime | 모달이 자동으로 닫히거나 다음 페이지로 이동하는 시간(초). 0으로 설정하여 비활성화합니다. | 20 |
closeModalGamepad | 게임 패드 버튼을 사용하여 모달을 닫습니다(Enum.KeyCode). | ButtonA |
closeModalKeyboard | 모달을 닫기 위해 사용하는 키보드 키( Enum.KeyCode ). | E |
completeModalText | 토큰 추적기를 완료한 후 모달에 표시할 텍스트. | “참여해주셔서 감사합니다!” |
infoModalText | 토큰 트래커를 클릭한 후 모달에 표시할 텍스트. | “사냥을 완료하려면 모든 토큰을 찾으십시오.” |
tokenRotationSpeed | 토큰이 초당 도 단위로 회전하는 속도. 회전을 방지하려면 0으로 설정합니다. | 20 |
nextArrowImage | 현재 모달 페이지 이후에 표시할 모달 페이지가 더 있음을 나타내는 이미지입니다. | “rbxassetid://8167172095” |
openTokenTrackerGamepad | 토큰 트래커를 활성화하면 나타나는 모달을 보여주는 게임 패드 버튼(Enum.KeyCode). | ButtonY |
openTokenTrackerKeyboard | 토큰 트래커를 활성화한 후 나타나는 모달을 표시하는 키보드 키( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | 토큰 추적기를 활성화하는 게임 패드 버튼에 대한 이미지. | “rbxassetid://8025860488” |
regionIcon | 지역을 입력할 때 토큰 트래커 옆에 표시되는 아이콘입니다. | “rbxassetid://8073794624” |
tokenIcon | 토큰을 수집할 때 토큰 트래커 옆에 표시되는 아이콘입니다. | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | 휴대 전화와 같은 소형 장치에서 토큰 추적기 UI의 위치 (UDim2). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | 태블릿 및 PC와 같은 대형 장치에서 토큰 추적기 UI의 위치( UDim2 ). | (1, 0, 1, -16) |
useRegions | 토큰 대신 지역을 사용하십시오. | 없음 |
로컬 스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,navigationBeam = {lightEmission = 1},modal = {textSize = 14},})
서버 구성
Class.Script 테이블의 다음 키/값을 통해 기본 서버 사이드 구성 옵션을 재정의합니다. 이 함수는 Script 에서만 호출할 수 있습니다.
키 | 설명 | 기본 |
---|---|---|
tokenTag | Class.CollectionService가 지정한 모든 토큰 또는 지역을 검색하는 데 사용되는 태그입니다. | “ScavengerHuntPart” |
datastoreName | Class.DataStore 용 스캐버 헌트 저장 각 플레이어의 컬렉션 진행 상황. | “스캐버너 헌트 토큰” |
resetOnPlayerRemoving | 진행 상황을 초기화하면 사용자가 경험을 떠날 때 진행 상황을 재설정할 수 있습니다. 사용자가 보물 찾기를 테스트하는 동안 진행 상황을 저장하지 않아도 편리합니다. | 없음 |
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
비활성화
보물찾기용 UI를 숨기고, 모든 입력 이벤트 수신기를 연결 해제하고, 플레이어가 토큰을 수집하거나 영역과 상호 작용하는 것을 방지합니다. 이 함수는 Script에서만 호출할 수 있습니다.
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
활성화
보물찾기 사냥에 대한 모든 UI를 표시하고, 모든 입력 이벤트 수신기를 연결하고, 플레이어가 토큰을 수집하고 지역과 상호 작용할 수 있도록 합니다. 이 함수는 Script에서만 호출할 수 있습니다.
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
이벤트
수집한
플레이어가 토큰과 충돌하거나 영역에 입장할 때 발생합니다. 연결된 함수는 토큰과 충돌한 토큰 또는 영역에 입장한 토큰 및 해당 토큰의 이름을 받습니다. 이 이벤트는 Player 에만 연결할 수 있습니다.
매개 변수 | |
---|---|
플레이어: Player | 토큰과 충돌하거나 지역을 입력한 사용자. |
아이템 이름: string | 충돌한 토큰 또는 입력한 지역의 이름입니다. |
총 수집: number | 사용자가 대표하는 player 의 총 토큰 수. |
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
모두 수집
플레이어가 모든 토큰을 수집하거나 보물찾기에 모든 지역을 입력할 때 발생합니다. 연결된 함수는 Player 를 수신하며, 플레이어마다 오직 한 번만 발생합니다. 이 이벤트는 Script 에만 연결될 수 있습니다.
매개 변수 | |
---|---|
플레이어: Player | 모든 토큰을 수집한 플레이어 또는 모든 지역을 입력한 플레이어. |
스크립트
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
정보 모달 표시
플레이어가 useCustomModals구성 옵션을 설정할 때 토큰 트래커를 클릭하면 이벤트가 발생합니다. 이 이벤트는 LocalScript 에만 연결될 수 있습니다.
로컬 스크립트
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)
완료된 모달 표시
플레이어가 useCustomModalsclass.localScript 옵션을 true 설정하고 토큰 트래커를 클릭하면 화살표가 나타납니다. 이 이벤트는 2>Class.LocalScript2>에만 연결될 수 있습니다.
로컬 스크립트
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)
콜백
기타 가이드 숨기기
이 콜백은 모달이 표시되기 전에 즉시 실행되므로 모달이 표시되기 전에 전체 ScreenGuis 또는 요소 내의 모든 요소를 비활성화할 수 있습니다. 자세한 내용은 GUI 가시성에 참조하십시오.
기타 가이드 표시
이 콜백은 모달이 닫힌 후 즉시 실행되므로 전체 ScreenGuis 또는 그 내의 요소를 활성화할 수 있습니다. 자세한 내용은 GUI 가시성에 참조하십시오.