Class
ServiceProvider
NotCreatableNotBrowsable
A ServiceProvider is an abstract class, which stores, and provides certain singleton classes, depending on what inherited class you are using its members with.
A ServiceProvider is an abstract base class that manages a registry of
singleton service instances. The DataModel (accessible in Lua as
game) is the primary ServiceProvider in an experience. Services are created
lazily the first time they are requested via
ServiceProvider:GetService() and remain available for the lifetime of
the DataModel.
You do not create ServiceProvider instances directly; instead you interact with its members through the DataModel.
Methods 4#
| FindService | Returns the service specified by the given className if it's already created, errors for an invalid name.Safe |
| GetService | Returns the service with the requested class name, creating it if it does not exist. |
| getService | Deprecated |
| service | Deprecated |
FindService(className: string): Instance#
Safe
Returns the service with the given class name only if it has already been
created. Unlike ServiceProvider:GetService(), this method does not
create the service when it does not yet exist; it returns nil instead.
If className is not a valid service name, the method throws an error.
This method is thread-safe and can be called from any thread context. It is useful when you need to check whether a service is present without triggering its initialization, for example during cleanup or conditional logic that should not force service creation.
| Name | Type | Default | Description |
|---|---|---|---|
className | string | The class name of the service to find. |
Returns
Instance— The service instance if it has already been created, or nil if the service does not yet exist.
GetService(className: string): Instance#
Returns a service with the class name requested. When called with the name
of a service (such as Debris) it will return the instance of that
service. If the service does not yet exist it will be created and the new
service is returned. This is the only way to create some services, and can
also be used for services that have unusual names, e.g. RunService's name
is "Run Service".
Note:
- This function will return
nilif the className parameter is an existing class, but the class is not a service. - If you attempt to fetch a service that is present under another Object, an error will be thrown stating that the "singleton serviceName already exists".
| Name | Type | Default | Description |
|---|---|---|---|
className | string | The class name of the requested service. |
Returns
Instance— An instance of the requested service.
getService(className: string): Instance#
DeprecatedDeprecated
Deprecated. This deprecated function is a variant of
ServiceProvider:GetService() which should be used instead.
| Name | Type | Default | Description |
|---|---|---|---|
className | string |
Returns
service(className: string): Instance#
DeprecatedDeprecated
Deprecated. This item has been superseded by ServiceProvider:GetService()
which should be used in all new work.
| Name | Type | Default | Description |
|---|---|---|---|
className | string |
Returns
Events 3#
| Close | Fires when the current place is exited. |
| ServiceAdded | Fired when a service is created. |
| ServiceRemoving | Fired when a service is about to be removed. |
Close()#
Fires when the game instance is shutting down, immediately before services and instances are torn down. On the server this occurs when the last player leaves or the server is closed; on the client it fires when the player leaves the experience.
Connect to this event to perform final cleanup such as saving player data
with DataStoreService. Handlers run synchronously — the engine
waits for all connected callbacks to return before proceeding with
shutdown.
ServiceAdded(service: Instance)#
Fires after a service is added to the DataModel. The service parameter
is the Instance of the newly added service. Because services are
created lazily (the first time ServiceProvider:GetService() is
called for them), this event lets you react to a service becoming
available without polling for it.
| Name | Type | Default | Description |
|---|---|---|---|
service | Instance | The instance of the service that was added. |
ServiceRemoving(service: Instance)#
Fires just before a service is removed from the DataModel. The service
parameter is the Instance that is about to be removed. This event
fires during DataModel teardown, giving listeners a chance to disconnect
from the service or release references before the service is destroyed.
| Name | Type | Default | Description |
|---|---|---|---|
service | Instance | The Instance of the service that is about to be removed. |
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild