게임 내에서 친구를 찾는 것은 어려울 수 있습니다. FriendsLocator 개발자 모듈을 사용하면 플레이어가 장소 내에서 친구를 쉽게 찾고 텔레포트할 수 있습니다.
모듈 사용법
설치
게임에서 FriendsLocator 모듈을 사용하려면:
Studio의 창 메뉴 또는 홈 탭 툴바에서 툴박스를 열고 크리에이터 상점 탭을 선택합니다.

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

패키지 타일을 찾아 클릭합니다.
Friends Locator 모듈을 찾아 클릭하거나 3D 뷰로 드래그 앤 드롭합니다.

탐색기 창에서 전체 FriendsLocator 모델을 ReplicatedStorage로 이동합니다. 게임을 실행하면 모듈이 실행되기 시작합니다.
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.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Studio에서 디버깅을 허용합니다.})Studio의 메자닌에서 2 클라이언트로 다중 클라이언트 시뮬레이션을 시작합니다. 세 개의 새로운 Studio 인스턴스가 열리며, 하나는 시뮬레이션된 서버이고 두 개는 시뮬레이션된 클라이언트입니다.

클라이언트 Studio 인스턴리 중 하나로 들어가서 다른 캐릭터에서 100 스터드 떨어진 거리를 이동하면 그 머리 위에 로케이터 아이콘이 나타나는 것을 볼 수 있습니다.

이벤트에 연결
FriendsLocator 모듈은 사용자가 로케이터 아이콘과 상호작용할 때 사용자 정의 동작을 도입할 수 있도록 이벤트를 노출합니다.
Studio에서 테스트에서 설명한 ConfigureFriendsLocator 스크립트를 생성했는지 확인합니다.
스크립트에 8행과 11-13행을 추가합니다:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Studio에서 디버깅을 허용합니다.teleportToFriend = false, -- 아이콘 클릭/탭 시 텔레포트 방지})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("로케이터 아이콘을 클릭했습니다:", player.DisplayName)end)다중 클라이언트 테스트를 수행하고 다른 캐릭터의 로케이터 아이콘을 클릭합니다. 캐릭터가 해당 위치로 텔레포트되지 않으며, 이벤트가 트리거되어 아이콘 클릭에 대한 사용자 정의 처리를 허용하는 것을 확인합니다.
사용자 정의 로케이터 UI
기본 스타일이 게임에 맞지 않는 경우, 기본 아바타 초상화 UI를 자신의 UI로 교체할 수 있습니다.

기본 UI를 교체하려면:
StarterGui 컨테이너 내에 새 ScreenGui 인스턴스를 생성합니다.

새 ScreenGui의 자식으로 FriendLocator라는 이름의 Frame 인스턴스를 생성한 다음, ImageLabels, TextLabels와 같은 요소를 추가하여 사용자 정의 UI를 디자인합니다.

완료되면, 모듈이 필요할 때까지 사용자 정의 로케이터 UI를 표시하지 않도록 부모 ScreenGui를 비활성화합니다.

- 선택 사항친구의 아바타 초상화와 DisplayName이 사용자 정의 UI의 어딘가에 표시되기를 원한다면, FriendLocator 프레임 내에 다음 인스턴스를 배치할 수 있습니다.
- 이름이 Portrait인 ImageLabel.
- 이름이 DisplayName인 TextLabel.

모듈은 이러한 항목을 찾아 친구의 아바타 초상화 및/또는 표시 이름을 각각 표시합니다.
API 참조
함수
configure
configure(config: table)
config 테이블의 다음 키/값을 통해 기본 구성 옵션을 재정의합니다.
| 키 | 설명 | 기본값 |
|---|---|---|
| alwaysOnTop | true인 경우, 모든 것 위에 로케이터 아이콘을 표시하여 3D 월드 객체에 의해 차단되지 않도록 합니다. | true |
| showAllPlayers | true인 경우, 친구뿐만 아니라 모든 플레이어의 위치를 표시합니다. 이는 Studio에서 모듈의 기능을 검증하는 데 도움이 될 수 있습니다. | false |
| teleportToFriend | 로케이터 아이콘이 클릭되거나 탭될 때 플레이어 캐릭터를 친구의 위치로 텔레포트합니다. | true |
| thresholdDistance | 로케이터 아이콘이 나타나는 카메라 거리 임계값; 이 거리보다 가까운 친구는 아이콘이 표시되지 않습니다. | 100 |
| maxLocators | 한 번에 표시되는 최대 로케이터 아이콘 수입니다. | 10 |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.configure({
alwaysOnTop = true,
showAllPlayers = false,
teleportToFriend = true,
thresholdDistance = 100,
maxLocators = 10
})이벤트
clicked
로케이터 아이콘이 로컬 플레이어에 의해 클릭/활성화될 때 발생합니다. 이 이벤트는 LocalScript에서만 연결할 수 있습니다.
| 매개변수 | |
|---|---|
| player: Player | 로케이터 아이콘이 속한 플레이어입니다. |
| playerCFrame: CFrame | 로케이터 아이콘이 속한 플레이어의 Humanoid.RootPart의 CFrame입니다. |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- 대상 위치 주변의 스트리밍 요청
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("로케이터 아이콘을 클릭했습니다:", player.DisplayName, "위치:", playerCFrame.Position)
end)visibilityChanged
로케이터 아이콘이 로컬 플레이어의 화면에 표시되거나 숨겨질 때 발생합니다. 이 이벤트는 LocalScript에서만 연결할 수 있습니다.
| 매개변수 | |
|---|---|
| player: Player | 로케이터 아이콘이 속한 Player 객체입니다. |
| playerCFrame: CFrame | 로케이터 아이콘이 속한 플레이어의 Humanoid.RootPart의 CFrame입니다. |
| isVisible: boolean | 로케이터 아이콘이 현재 로컬 플레이어의 화면에 표시되는지 여부입니다. alwaysOnTop이 false이고 로케이터가 3D 월드의 객체 뒤에 렌더링되는 경우에도 여전히 true가 됩니다. |
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("로케이터 아이콘의 가시성:", player.DisplayName, ":", isVisible)
end)