친구 로케이터

체험 내에서 친구를 찾는 것이 어려울 때가 있습니다. FriendsLocator 개발자 모듈을 사용하면 플레이어가 플레이스 내에서 쉽게 친구를 찾고 친구에게 텔레포트할 수 있습니다.

모듈 사용

설치

체험에서 FriendsLocator 모듈을 사용하는 방법

  1. 보기 탭에서 도구 상자를 열고 마켓플레이스 탭을 선택합니다.

    Studio의 도구상자 토글 버튼
  2. 모델 정렬이 선택되었는지 확인한 다음 카테고리에서 모두 보기 버튼을 클릭합니다.

  3. DEV MODULES 타일을 찾아 클릭합니다.

  4. 친구 검색기 모듈을 찾아 클릭하거나 3D 보기로 끌어다 놓습니다.

  5. 탐색기 창에서 전체 FriendsLocator 모델을 ServerScriptService로 이동합니다. 체험을 실행하면 모듈이 다양한 서비스에 배포되고 실행되기 시작합니다.

Studio에서 테스트

Studio에서 이 모듈을 테스트하려면 FriendsLocator 모듈이 다중 클라이언트 시뮬레이션에서 실행되어야 합니다. 솔로 플레이테스트에서는 친구가 없기 때문입니다.

  1. StarterPlayerScripts에서 새로운 LocalScript를 만들고 이름을 ConfigureFriendsLocator로 변경합니다.

  2. 다음의 코드를 이 새로운 ConfigureFriendsLocator 스크립트에 붙여 넣습니다. configure 함수 안의 showAllPlayers 설정으로 인해 게시된 플레이스가 아니라 Studio에서 테스트하는 동안 검색기가 모든 사용자에게 표시됩니다.

    LocalScript - ConfigureFriendsLocator

    local 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
    })
  3. '테스트(Test)' 탭에서 '클라이언트 및 서버(Clients and Servers)'에 대해 아래와 같은 조합을 선택한 다음 '시작(Start)' 버튼을 클릭합니다. 한 개의 시뮬레이션 서버와 두 개의 시뮬레이션 클라이언트로 구성된 세 개의 새로운 Studio 인스턴스가 열립니다.

  4. 둘 중 하나의 클라이언트 Studio 인스턴스로 가서 다른 캐릭터로부터 거리를 100스터드 이동하면 머리 위에 검색기 아이콘이 나타납니다.

이벤트에 연결

사용자가 검색기 아이콘과 상호 작용할 때 사용자 지정 동작을 도입하실 수 있도록 FriendsLocator 모듈은 이벤트를 노출합니다.

  1. 반드시 Studio에서 테스트에 나온 것과 같이 ConfigureFriendsLocator 스크립트를 생성해야 합니다.

  2. 스크립트에 8행과 11~13행을 추가합니다.

    LocalScript - ConfigureFriendsLocator

    local 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
    teleportToFriend = false, -- Prevent teleport on icon click/tap
    })
    FriendsLocator.clicked:Connect(function(player, playerCFrame)
    print("You clicked on locator icon for", player.DisplayName)
    end)
  3. 다중 클라이언트 테스트를 수행하고 다른 캐릭터의 검색기 아이콘을 클릭합니다. 캐릭터가 해당 위치로 텔레포트하지 않고, 아이콘 클릭 처리를 사용자 지정할 수 있도록 이벤트가 트리거되는 것을 확인합니다.

사용자 지정 검색기 UI

기본 스타일이 본인의 체험과 맞지 않으면 기본 아바타 초상화 UI를 본인의 UI로 교체할 수 있습니다.

기본 UI를 교체하는 방법

  1. StarterGui 컨테이너 안에 새로운 ScreenGui 인스턴스를 만듭니다.

  2. FriendLocator라는 이름의 Frame 인스턴스를 이 새로운 ScreenGui의 자식 항목으로 만듭니다.

  3. ImageLabels, TextLabels 등을 FriendLocator 프레임에 추가하여 사용자 지정 UI를 디자인합니다.

  4. 완료했으면, 필요할 때까지 모듈이 이 사용자 지정 검색기 UI를 표시하지 않도록 부모 항목인 ScreenGui비활성화합니다.

  5. (선택 사항) 친구의 아바타 초상화 및 DisplayName을 사용자 지정 UI의 어딘가에 표시되도록 하려면 FriendLocator 프레임 안에 다음과 같은 인스턴스를 배치합니다.

    모듈이 이러한 아이템을 찾아 각각 친구의 아바타 초상화 및/또는 표시 이름을 표시합니다.

API 참조

함수

구성

configure(config:table):nil

다음과 같은 config 테이블의 키/값을 통해 기본 구성 옵션을 재정의합니다.

설명기본
alwaysOnToptrue인 경우, 3D 월드 개체가 가로막지 못하게 모든 것의 위에 검색기 아이콘을 표시합니다.true
showAllPlayerstrue인 경우, 친구뿐만 아니라 모든 플레이어의 위치를 표시합니다. 이는 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.RootPartCFrame입니다.
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.RootPartCFrame입니다.
isVisible: boolean검색기 아이콘이 현재 로컬 플레이어의 화면에 표시되는지 여부입니다. alwaysOnTopfalse이고 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)