Pode ser desafiador localizar amigos na experiência. O FriendsLocatormódulo de desenvolvedores permite que os jogadores facilmente encontrem e teletransportem para seus amigos dentro de um local.
Uso de Módulo
Instalação
Para usar o módulo FriendsLocator em uma experiência:
Na aba Ver, abra a caixa de ferramentas e selecione a aba Loja do Criador.
Certifique-se de que a classificação Modelos foi selecionada, então clique no botão Ver Todos para Categorias .
Localize e clique no mosaico Modulos de Desenvolvedor .
Localize o módulo Localizador de Amigos e clique nele, ou arraste e solte na janela de ver3D.
Na janela Explorer, mova o modelo completo de FriendsLocator para ServerScriptService . Ao executar a experiência, o módulo será distribuído para vários serviços e começará a funcionar.
Testando no Studio
Para testar o módulo no Studio, o módulo FriendsLocator deve ser executado em uma simulação de múltiplos clientes, já que nenhum amigo estará presente em um teste solo.
In StarterPlayerScripts , create a new LocalScript and rename it ConfigureFriendsLocator .
Paste o seguinte código no novo ConfigureFriendsLocator script. A configuração showAllPlayers dentro da função configure garante que os locadores sejam mostrados para todos os usuários durante a testem em Studio, mas não em um local publicado.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Permite depuração no Studio})Na aba Teste, selecione a combinação a seguir para Clientes e Servidores , então clique no botão Iniciar . Três novas instâncias do Studio serão abertas; um servidor simulado e dois clientes simulados.
Vá para uma das instâncias do Studio cliente , mova uma distância de 100 studs do outro personagem e você deve ver um ícone de localizador aparecer sobre sua cabeça.
Conectando a Eventos
O módulo FriendsLocator exibe eventos para que você possa introduzir comportamentos personalizados quando os usuários interagem com um ícone de localizador.
Certifique-se de que você criou o ConfigureFriendsLocator script descrito em Testando no Studio.
Adicione linhas 8 e 11-13 ao script:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- Permite depuração no StudioteleportToFriend = false, -- Impedir o teleporte no clique/toque de ícone})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("You clicked on locator icon for", player.DisplayName)end)Conduzir um teste mult클iente e clique no ícone de localizador de outro personagem. Observe que seu personagem não se teletransporta para essa localização, e os eventos são acionados para permitir que o tratamento personalizado de cliques de ícones seja permitido.
Interface do Localizador Personalizado
Se o estilo padrão não for ajustado à sua experiência, você pode substituir a interface de avatar padrão com sua própria interface.
Para substituir a interface padrão:
Crie uma nova instância ScreenGui dentro do contêiner StarterGui .
Quando terminar, desabilite o pai ScreenGui para que o módulo não mostre a interface de localizador personalizado até necessário.
(Opcional) Se você quiser o retrato de avatar do amizadee DisplayName para aparecer em algum lugar na interface personalizada, você pode colocar as seguintes instâncias dentro da janela de FriendLocator .
- Um ImageLabel do nome Retrato .
- Um TextLabel do nome DisplayName .
O módulo procurará por esses itens e exibirá o retrato do avatar do amizadee/ou o nome de exibição respectivo.
Referência da API
Funções
configurar
Substitui as opções de configuração padrão através das seguintes chaves/valores na tabela config.
Chave | Descrição | Padrão |
---|---|---|
alwaysOnTop | Se true , mostra ícones de localizador no topo de tudo, impedindo que sejam bloqueados por objetos 3D. | verdade |
showAllPlayers | Se true , mostra locais para todos os jogadores, não apenas amigos; isso pode ajudar a verificar a funcionalidade do módulo no Studio. | falso |
teleportToFriend | Teletransporta o personagem do jogador para a localização do amizadequando seu ícone de localizador é clicado ou tocado. | verdade |
thresholdDistance | Distância da câmera em que os ícones de localizador aparecem; amigos mais próximos que esta distância não exibirão ícones. | 100 |
maxLocators | Número máximo de ícones de localizador mostrados em qualquer momento. | 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})
Eventos
clicou
Ocorre quando um ícone de localizador é clicado/ativado pelo jogador local. Este evento só pode ser conectado em um LocalScript.
Parâmetros | |
---|---|
jogador: Player | Jogador que o ícone de localizador pertence. |
playerCFrame: CFrame | CFrame do jogador Humanoid.RootPart que o ícone de localizador pertence. |
Script Local
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local FriendsLocator = require(ReplicatedStorage:WaitForChild("FriendsLocator"))
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- Solicitar streaming em torno da localização do alvo
if workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("You clicked on locator icon for", player.DisplayName, "at position", playerCFrame.Position)
end)
visibility mudou
Solicitações de fire são disparadas quando um ícone de localizador é mostrado/escondido na tela do jogador local. Este evento só pode ser conectado em um LocalScript .
Parâmetros | |
---|---|
jogador: Player | Player objeto que o ícone de localizador pertence. |
playerCFrame: CFrame | CFrame do jogador Humanoid.RootPart que o ícone de localizador pertence. |
isVisible: boolean | Se o ícone de localizador está atualmente visível na tela do jogador local. Observe que isso ainda será true se alwaysOnTop estiver false e o localizador renderizando por trás de um objeto no mundo 3D. |
Script Local
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)