체험 내에서 친구를 찾는 것이 어려울 때가 있습니다. FriendsLocator 개발자 모듈을 사용하면 플레이어가 플레이스 내에서 쉽게 친구를 찾고 친구에게 텔레포트할 수 있습니다.
모듈 사용
설치
체험에서 FriendsLocator 모듈을 사용하는 방법
보기 탭에서 도구 상자를 열고 마켓플레이스 탭을 선택합니다.
모델 정렬이 선택되었는지 확인한 다음 카테고리에서 모두 보기 버튼을 클릭합니다.
DEV MODULES 타일을 찾아 클릭합니다.
친구 검색기 모듈을 찾아 클릭하거나 3D 보기로 끌어다 놓습니다.
탐색기 창에서 전체 FriendsLocator 모델을 ServerScriptService로 이동합니다. 체험을 실행하면 모듈이 다양한 서비스에 배포되고 실행되기 시작합니다.
Studio에서 테스트
Studio에서 이 모듈을 테스트하려면 FriendsLocator 모듈이 다중 클라이언트 시뮬레이션에서 실행되어야 합니다. 솔로 플레이테스트에서는 친구가 없기 때문입니다.
StarterPlayerScripts에서 새로운 LocalScript를 만들고 이름을 ConfigureFriendsLocator로 변경합니다.
다음의 코드를 이 새로운 ConfigureFriendsLocator 스크립트에 붙여 넣습니다. configure 함수 안의 showAllPlayers 설정으로 인해 게시된 플레이스가 아니라 Studio에서 테스트하는 동안 검색기가 모든 사용자에게 표시됩니다.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Allows for debugging in Studio})'테스트(Test)' 탭에서 '클라이언트 및 서버(Clients and Servers)'에 대해 아래와 같은 조합을 선택한 다음 '시작(Start)' 버튼을 클릭합니다. 한 개의 시뮬레이션 서버와 두 개의 시뮬레이션 클라이언트로 구성된 세 개의 새로운 Studio 인스턴스가 열립니다.
둘 중 하나의 클라이언트 Studio 인스턴스로 가서 다른 캐릭터로부터 거리를 100스터드 이동하면 머리 위에 검색기 아이콘이 나타납니다.
이벤트에 연결
사용자가 검색기 아이콘과 상호 작용할 때 사용자 지정 동작을 도입하실 수 있도록 FriendsLocator 모듈은 이벤트를 노출합니다.
반드시 Studio에서 테스트에 나온 것과 같이 ConfigureFriendsLocator 스크립트를 생성해야 합니다.
스크립트에 8행과 11~13행을 추가합니다.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Allows for debugging in StudioteleportToFriend = false, -- Prevent teleport on icon click/tap})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)다중 클라이언트 테스트를 수행하고 다른 캐릭터의 검색기 아이콘을 클릭합니다. 캐릭터가 해당 위치로 텔레포트하지 않고, 아이콘 클릭 처리를 사용자 지정할 수 있도록 이벤트가 트리거되는 것을 확인합니다.
사용자 지정 검색기 UI
기본 스타일이 본인의 체험과 맞지 않으면 기본 아바타 초상화 UI를 본인의 UI로 교체할 수 있습니다.
기본 UI를 교체하는 방법
StarterGui 컨테이너 안에 새로운 ScreenGui 인스턴스를 만듭니다.
ImageLabels, TextLabels 등을 FriendLocator 프레임에 추가하여 사용자 지정 UI를 디자인합니다.
완료했으면, 필요할 때까지 모듈이 이 사용자 지정 검색기 UI를 표시하지 않도록 부모 항목인 ScreenGui를 비활성화합니다.
(선택 사항) 친구의 아바타 초상화 및 DisplayName을 사용자 지정 UI의 어딘가에 표시되도록 하려면 FriendLocator 프레임 안에 다음과 같은 인스턴스를 배치합니다.
- 이름 Portrait의 ImageLabel
- 이름 DisplayName의 TextLabel
모듈이 이러한 아이템을 찾아 각각 친구의 아바타 초상화 및/또는 표시 이름을 표시합니다.
API 참조
함수
구성
configure(config:table):nil
다음과 같은 config 테이블의 키/값을 통해 기본 구성 옵션을 재정의합니다.
키 | 설명 | 기본 |
---|---|---|
alwaysOnTop | true인 경우, 3D 월드 개체가 가로막지 못하게 모든 것의 위에 검색기 아이콘을 표시합니다. | true |
showAllPlayers | true인 경우, 친구뿐만 아니라 모든 플레이어의 위치를 표시합니다. 이는 Studio에서 모듈의 기능을 확인하는 데 도움이 됩니다. | false |
teleportToFriend | 검색기 아이콘을 클릭하거나 누를 때 플레이어 캐릭터를 친구의 위치로 텔레포트합니다. | true |
thresholdDistance | 검색기 아이콘이 표시되는 카메라 거리 임계값입니다. 이 거리보다 가까운 친구는 아이콘을 표시하지 않습니다. | 100 |
maxLocators | 임의의 지정된 시간에 표시되는 검색기 아이콘의 최대 개수입니다. | 10 |
LocalScript - ConfigureFriendsLocator
local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
이벤트
clicked
clicked(player:Player, playerCFrame:CFrame): RBXScriptSignal
로컬 플레이어가 검색기 아이콘을 클릭/활성화할 때 발생합니다. 해당 이벤트는 LocalScript에서만 연결할 수 있습니다.
매개변수 | |
---|---|
player: Player | 검색기 아이콘이 속한 플레이어입니다. |
playerCFrame: CFrame | 검색기 아이콘이 속한 플레이어 Humanoid.RootPart의 CFrame입니다. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.clicked:Connect(function(player, playerCFrame)
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)
visibilityChanged
visibilityChanged(player:Player, playerCFrame:CFrame, isVisible:boolean): RBXScriptSignal
로컬 플레이어의 화면에서 검색기 아이콘이 표시될/숨겨질 때 발생합니다. 해당 이벤트는 LocalScript에서만 연결할 수 있습니다.
매개변수 | |
---|---|
player: Player | 검색기 아이콘이 속한 Player 개체입니다. |
playerCFrame: CFrame | 검색기 아이콘이 속한 플레이어 Humanoid.RootPart의 CFrame입니다. |
isVisible: boolean | 검색기 아이콘이 현재 로컬 플레이어의 화면에 표시되는지 여부입니다. alwaysOnTop이 false이고 3D 월드에서 검색기가 개체의 뒤에 렌더링되는 경우 이 매개변수는 계속 true입니다. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("Visibility of locator icon for", player.DisplayName, ":", isVisible)
end)