En Reutilización de código, puede que te hayas dado cuenta de un uso frecuente de la método game:GetService() del motor. Los servicios de Roblox te permiten acceder a las características integradas del motor, como vender artículos en la experiencia, habilitar chat, jugar sonidos, animar objetos y administrar instancias.
De hecho, los servicios son el primer paso en el patrón más fundamental, común de la desarrollo de Roblox :
- Obtener servicios.
- Requiere scripts de módulo.
- Agregar funciones locales.
- Añade los eventos que desencadenan esas funciones.
Por ejemplo, puede que quieras guardar las posiciones de los jugadores en el mundo cuando salgan de tu experiencia:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
-- Función local que llama a una función reutilizable en el script del módulo.
local function saveProgress(character)
-- Obtener la posición del personaje del jugador.
local position = character:FindFirstChild("HumanoidRootPart").Position
-- Usa la función saveData en el script del módulo, que escribe en
-- Almacén de datos.
SaveManager.saveData(character, position)
end
-- Otro error local que llama saveProgress() cuando se elimina un personaje
-- de la experiencia (en este caso, cuando el jugador se va).
local function onPlayerAdded(player)
player.CharacterRemoving:Connect(saveProgress)
end
-- Llamar a PlayerAdded cuando un jugador se conecta por primera vez a la experiencia.
Players.PlayerAdded:Connect(onPlayerAdded)
Algunos detalles de clave incluyen:
- Dado que solo deberías recuperar un servicio una vez por script, la convención es darle a la variable el mismo nombre que el servicio. Esta convención también se aplica a los scripts de módulo.
- Recupera servicios con la variable global game, una referencia a la raíz del aplicación de modeladode datos.
- Roblox no hace garantías alrededor de la orden de carga (y streaming de instancia más complica lo que se carga en cualquier momento), por lo que el uso de Instance:WaitForChild() es una medida de seguridad importante.
En lugar de comparar bibliotecas estándar , funciones y variables globales o bibliotecas de terceros, una gran parte del desarrollo de Roblox se basa en identificar qué de las muchas, muchas servicios puede ayudarlo a agregar la funcionalidad deseada a sus experiencias. En el ejemplo de arriba, en lugar de usar una biblioteca de I/O estándar para escribir en el disco, usted usa servicios de nube
Servicios de contenedor
Los servicios de contenedor pueden contener y influir en otros objetos. Estos servicios de contenedor residen en la raíz del modelo de datos y están visibles en la ventana Explorador de Studio. Colectivamente, estos servicios de contenedor forman una jerarquía estructurada para el aplicación de modeladode datos, para que el motor de Roblox pueda interpretar y renderizar correctamente su lugar. La siguiente tabla incluye algunos servicios de contenedor comunes.
Servicio | Descripción :--- | :--- Workspace | Contiene todos los objetos que se renderizan en el mundo 3D, como partes y terreno. Lighting | Contiene objetos para configurar los efectos de iluminación
Para examinar el aplicación de modeladode datos, puede usar estos métodos:
- game:FindService() busca la instancia del servicio especificado.
- game:GetChildren() aplicación de modelado
- game:GetDescendants() aplicación de modelado
Para obtener más información sobre los servicios de contenedor, consulte la documentación del modelo de datos.
Servicios de guión
Los servicios de scripts proporcionan funciones estándar en el motor de Roblox que llamas dentro de los scripts. La siguiente tabla incluye algunos servicios de scripts comunes.
Servicio | Descripción :--- | :--- Class.T
Servicios de nube
Roblox también tiene servicios de nube especiales para manejar tareas y procesos que ocurren en la nube de Roblox. La siguiente tabla incluye algunos servicios de nube comunes.
Servicio | Descripción :--- | :--- DataStoreService | Para almacenar datos persistentes entre sesiones. MemoryStoreService | Para almacenar datos frecuentes que cambian rápidamente. MessagingService | Para comunicarse entre múltiples servidores durante sesiones en vivo.
Los servicios de la nube también tienen API de correspondencia web; son accesibles desde scripts o herramientas externas. Para obtener más información, see Abrir la nube .