Pode ser desafiador localizar amigos dentro da experiência. O módulo de desenvolvedor FriendsLocator permite que os jogadores encontrem e se teletransportem facilmente até seus amigos dentro de um local.
Uso do módulo
Instalação
Para usar o módulo FriendsLocator em uma experiência:
Na aba Exibir, abra a Caixa de ferramentas e selecione a aba Mercado.
Verifique se a ordenação de Modelos está selecionada e, em seguida, clique no botão Exibir Tudo para Categorias.
Encontre e clique no painel DEV MODULES
Localize o módulo Localizador de amigos e clique nele ou arraste e solte-o na visualização 3D.
Na janela do Explorador, mova todo o modelo FriendsLocator para o ServerScriptService. Ao executar a experiência, o módulo será distribuído para vários serviços e começará a ser executado.
Testes no Studio
Para testar o módulo no Studio, o módulo FriendsLocator deve ser executado em uma simulação multicliente, já que nenhum amigo estará presente em um teste de jogo solo.
Em StarterPlayerScripts, crie um novo Class. LocalScript e renomeie-o para ConfigureFriendsLocator.
Cole o seguinte código dentro do novo script ConfigureFriendsLocator. A configuração showAllPlayers dentro da função configurar garante que os localizadores sejam mostrados para todos os usuários durante os testes no 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(), -- Allows for debugging in Studio})Na aba Teste, selecione a seguinte combinação para Clientes e servidores e, em seguida, clique no botão Iniciar. Três novas instâncias do Studio serão abertas; um servidor simulado e dois clientes simulados.
Entre em uma das instâncias de cliente do Studio, mova-se até uma distância de 100 rebites do outro personagem e você deverá ver um ícone localizador aparecer sobre a sua cabeça.
Conexão com eventos
O módulo FriendsLocator expõe eventos para que você possa introduzir comportamentos personalizados quando os usuários interagem com um ícone localizador.
Certifique-se de ter criado o script ConfigureFriendsLocator descrito em Testes no Studio.
Adicione as 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(), -- 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)Realize um teste multicliente e clique no ícone localizador de outro personagem. Observe que seu personagem não se teletransporta para esse local, e o evento é acionado para permitir o processamento personalizado de cliques nos ícones.
IU do localizador personalizado
Se o estilo padrão não se adequar à sua experiência, você pode substituir a interface de usuário padrão de retrato do avatar pela sua própria IU.
Para substituir a IU padrão:
Crie uma nova instância Class. ScreenGui dentro do contêiner StarterGui.
Crie uma instância Class. Frame chamada FriendLocator como um filho da nova Class. ScreenGui.
Crie sua IU personalizada adicionando Class. ImageLabel|ImageLabels, Class. TextLabel|TextLabels etc. ao quadro do FriendLocator.
Quando terminar, desabilite o pai Class. ScreenGui para que o módulo não mostre a IU do localizador personalizado até que seja necessário.
(Opcional) Se você quiser que o retrato do avatar e Class. Player. DisplayName|DisplayName do amigo sejam exibidos em algum lugar na IU, pode colocar as seguintes instâncias dentro do quadro do FriendLocator.
- Um Class. ImageLabel do nome Portrait.
- Um Class. TextLabel do nome DisplayName.
O módulo irá pesquisar esses itens e exibir o retrato do avatar e/ou o nome de exibição do amigo, respectivamente.
Referência de API
Funções
configurar
configure(config:table):nil
Substitui as opções de configuração padrão por meio das chaves-valor na tabela config.
Chave | Descrição | Padrão |
---|---|---|
alwaysOnTop | Se true, mostra ícones localizadores em cima de tudo, evitando que sejam bloqueados por objetos do universo 3D. | true |
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. | false |
teleportToFriend | Teletransporta o personagem do jogador para a localização do amigo quando o ícone localizador dele é clicado ou tocado. | true |
thresholdDistance | Limite de distância da câmera no qual os ícones localizadores aparecem; amigos mais próximos do que essa distância não exibirão ícones. | 100 |
maxLocators | Número máximo de ícones localizadores mostrados a 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
clicados
clicked(player:Class. Player, playerCFrame:CFrame): RBXScriptSignal
É acionado quando um ícone localizador é clicado/ativado pelo jogador local. O evento só pode ser conectado a um Class. LocalScript.
Parâmetros | |
---|---|
jogador: Class. Player | Jogador ao qual o ícone localizador pertence. |
playerCFrame: CFrame | CFrame do Class. Humanoid. RootPart do jogador ao qual o ícone localizador pertence. |
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:Class. Player, playerCFrame:CFrame, isVisible:boolean): RBXScriptSignal
É acionado quando um ícone localizador é exibido/ocultado na tela do jogador local. O evento só pode ser conectado a um Class. LocalScript.
Parâmetros | |
---|---|
jogador: Class. Player | Class. Player objeto ao qual o ícone localizador pertence. |
playerCFrame: CFrame | CFrame do Class. Humanoid. RootPart do jogador ao qual o ícone localizador pertence. |
isVisible: boolean | Se o ícone localizador está visível no momento na tela do jogador local. Observe que isso ainda será true se alwaysOnTop for false, e o localizador será renderizado atrás de um objeto no mundo 3D. |
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)