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 :
- Obtenha serviços.
- Exija scripts de módulo.
- Adicione funções locais.
- 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.