Serviços

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Em Reutilizar código, você pode ter notado o uso frequente do método game:GetService().Os serviços do Roblox permitem que você acesse os recursos integrados do motor, como vender itens na experiência, habilitar chat, tocar sons, animar objetos e gerenciar instâncias.

Na verdade, os serviços são o primeiro passo em o padrão mais fundamental e comum de desenvolvimento do Roblox :

  1. Obtenha serviços.
  2. Exija scripts de módulo.
  3. Adicione funções locais.
  4. Adicione os eventos que ativam essas funções.

Por exemplo, você pode querer salvar as posições dos jogadores no mundo quando eles saem da sua experiência:


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Função local que chama uma função reutilizável no script do módulo.
local function saveProgress(character)
-- Obtenha a posição do personagem do jogador.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Use a função saveData no script do módulo, que escreve no
-- Serviço de Armazenamento de Dados.
SaveManager.saveData(character, position)
end
-- Outra função local que chama saveProgress() quando um personagem é removido
-- da experiência (neste caso, quando o jogador sai).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Chama onPlayerAdded quando um jogador se conecta pela primeira vez à experiência.
Players.PlayerAdded:Connect(onPlayerAdded)

Alguns detalhes chave incluem:

  • Como você só deve recuperar um serviço uma vez por script, a convenção é dar ao variável o mesmo nome do serviço.Esta convenção se aplica a scripts de módulo, também.
  • Você recupera serviços com a variável global game, uma referência à raiz do modelo de dados.
  • O Roblox não faz garantias em torno da ordem de carregamento (e streaming de instância adiciona mais complicações ao que é e não é carregado a qualquer momento), então o uso de Instance:WaitForChild() é uma medida de segurança importante.

Em vez de comparar bibliotecas padrão, funções globais e variáveis ou bibliotecas de terceiros, uma grande parte do desenvolvimento do Roblox é identificar qual dos muitos, muitos serviços pode ajudá-lo a adicionar a funcionalidade desejada às suas experiências.No exemplo acima, em vez de usar uma biblioteca de I/O padrão para escrever no disco, você usa serviços de nuvem para armazenar dados.

Serviços de container

Serviços de contêiner podem conter e influenciar outros objetos.Esses serviços de contêiner residem na raiz do modelo de dados e são visíveis na janela Explorer do Studio.Coletivamente, esses serviços de contêiner formam uma hierarquia estruturada para o modelo de dados, para que o Roblox Engine possa interpretar e renderizar adequadamente o seu local.A tabela a seguir inclui alguns serviços de contêiner comuns.

Serviço | Descrição: --- | :--- Workspace | Contém todos os objetos que renderizam no mundo 3D, como peças e terreno.Lighting | Contém objetos para definir efeitos de iluminação universais, como Atmosphere e Sky. ReplicatedStorage e ReplicatedFirst | Contém conteúdo e lógica que se replica entre o servidor e o cliente.

Para examinar ainda mais o modelo de dados, você pode usar esses métodos:

  • game:FindService() pesquisas pela instância do serviço especificado.
  • game:GetChildren() retorna um array de todos os filhos raiz do modelo de dados, que são os serviços de contêiner de alto nível.
  • game:GetDescendants() retorna um array de todos os descendentes do modelo de dados, incluindo todos os serviços de contêiner e seus filhos.

Para mais informações sobre serviços de contêiner, consulte a documentação do modelo de dados.

Services de scriptagem

Serviços de scripting fornecem funcionalidade padrão no Roblox Engine que você chama dentro de scripts.A tabela a seguir inclui alguns serviços de script comuns.

Serviço | Descrição: --- | :--- TweenService | Usado para interpolar propriedades numéricas de outras instâncias de um valor de início a fim, com opções para facilitar a direção e o estilo, repetir e atrasar. MarketplaceService | O serviço responsável por transações na experiência, como solicitar ao jogador que compre um produto do desenvolvedor, assinatura ou passe de jogo, atualize para Roblox Premium, etc. ContextActionService | Permite que você vincule a entrada do usuário, como pressionarde tecla, toque na tocarou pressão de botão do controlador, a ações contextuais, como modificar controles quando o usuário entra e sai de um carro. RunService | Contém métodos e eventos para gerenciamento de tempo de quadro a quadro, bem como para verificar o contexto (servidor, cliente, modo do Studio) em que a experiência está sendo executada.Útil para executar qualquer processo ou atualização em cada frame de tempo de execução. SoundService | Controla vários aspectos globais de como o áudio é reproduzido em uma experiência, como a escala doppler e o áudio volumétrico.Também pode conter grupos de som para controlar as propriedades de volume e efeitos dinâmicos de vários sinais de áudio de uma só vez. CollectionService | Gerencia grupos (coleções) de instâncias com tags que se replicam do servidor para o cliente, permitindo que você atribua e trabalhe mais facilmente com grupos de instâncias relacionadas.

Serviços de nuvem

O Roblox também tem serviços de nuvem especiais para lidar com tarefas e processos que ocorrem na nuvem do Roblox.A tabela a seguir inclui alguns serviços de nuvem comuns.

Serviço | Descrição :--- | :--- DataStoreService | Para armazenar dados persistentes através de sessões.MemoryStoreService | Para armazenar dados frequentes e efêmeros que mudam rapidamente.MessagingService | Para se comunicar entre vários servidores durante sessões ao vivo.

Os serviços em nuvem também têm APIs web correspondentes; eles são acessíveis a partir de scripts ou ferramentas externos. Para mais informações, veja Abrir Nuvem.