AssetService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
AssetService est un service non répliqué qui gère les requêtes liées aux ressources vers l'API Web Roblox.
Résumé
Méthodes
Crée un nouveau EditableImage .
Crée un nouveau, vide EditableMesh.
Télécharge une nouvelle ressource sur Roblox à partir de l'objet donné.
- CreateAssetVersionAsync(object : Object,assetType : Enum.AssetType,assetId : number,requestParameters : Dictionary):Tuple
Télécharge une nouvelle version pour une ressource existante à partir de l'objet donné.
Crée un nouvel objet EditableImage vierge de l'image donnée.
Renvoie un nouvel objet EditableMesh créé à partir d'un ID de contenu de maillage existant.
Crée un nouveau MeshPart avec un ID de maillage spécifié et une table facultative de valeurs de fidélité.
Clone un lieu à travers le templatePlaceID.
- CreatePlaceInPlayerInventoryAsync(player : Instance,placeName : string,templatePlaceID : number,description : string):number
Clone un lieu à travers le templatePlaceID et le met dans l'inventaire du joueur donné.
Renvoie une série d'ID de ressources contenues dans un paquet spécifié.
Fournit des métadonnées pertinentes sur une source audio spécifique.
Renvoie les détails du contenu du paquet spécifié.
Renvoie un objet StandardPages qui contient le nom et PlaceId les lieux à l'intérieur de l'expérience actuelle.
Permet la création d'actifs en expérience pour les utilisateurs en leur demandant de lancer un dialogue de publication.
Enregistre l'état de l'endroit actuel.
Trouve des ressources audio correspondant à une variété de critères de recherche.
Propriétés
Méthodes
CreateEditableImage
Crée un nouveau EditableImage . Par défaut, la résolution est définie à 512×512, mais vous pouvez spécifier une taille différente en utilisant la table d'options de la méthode.
Si le budget de mémoire modifiable spécifique au dispositif est épuisé, la création échoue et cette méthode renvoie nil .
Paramètres
Table d'options contenant des contrôles pour la méthode :
- Size – Un Vector2 qui spécifie la largeur et la hauteur souhaitées de l'image.
Retours
CreateEditableMesh
Crée un nouveau, vide EditableMesh.Les vertex, triangles et leurs attributs peuvent être ajoutés dynamiquement à elle.Si le budget de mémoire modifiable spécifique au dispositif est épuisé, la création échouera et cette méthode renverra nil .
Paramètres
Table contenant des options pour le créé EditableMesh .Actuellement, aucune option n'est disponible puisque FixedSize sera toujours false pour les mailles éditables vides.
Retours
CreateAssetAsync
Télécharge une nouvelle ressource sur Roblox à partir de l'objet donné.
Actuellement, cette méthode ne peut être utilisée que dans les plugins locaux chargés et télécharger des ressources sans demander d'abord.
Paramètres
L'objet à créer en tant que ressource.
Les types actuellement pris en charge sont :
Table d'options contenant des métadonnées de ressources :
- Name – Nom de la ressource en tant que chaîne. Défaut à [object.Name] .
- Description – Description de la ressource en tant que chaîne. Défaut à "Created with AssetService:CreateAssetAsync" .
- CreatorId – ID du créateur de ressources comme un nombre.Par défaut pour l'utilisateur de Roblox Studio connecté pour le contexte des plugins.Nécessaire pour le contexte d'exécution Open Cloud Luau.
- CreatorType – Enum.AssetCreatorType indiquant le type de créateur de ressources.Par défaut à Enum.AssetCreatorType.User dans le contexte du plugin.Nécessaire pour le contexte d'exécution Open Cloud Luau.
- IsPackage – Valeur booléenne, applicable uniquement au type Enum.AssetType.Model . Par défaut à true .
Retours
Le paire d'ID de ressource et de Enum.CreateAssetResult si réussi.
Échantillons de code
Le code suivant crée une ressource maillage à partir d'un maillage modifiable.
local AssetService = game:GetService("AssetService")
local editableMesh = AssetService:CreateEditableMesh()
-- ajouter des vertex, des faces et des uvs à la maille
local requestParameters = {
CreatorId = 123,
CreatorType = Enum.AssetCreatorType.User,
Name = "My asset",
Description = "a good asset",
}
local ok, result, idOrUploadErr = pcall(function()
return AssetService:CreateAssetAsync(editableMesh, Enum.AssetType.Mesh, requestParameters)
end)
if not ok then
warn(`error calling CreateAssetAsync: {result}`)
elseif result == Enum.CreateAssetResult.Success then
print(`success, new asset id: {idOrUploadErr}`)
else
warn(`upload error in CreateAssetAsync: {result}, {idOrUploadErr}`)
end
CreateAssetVersionAsync
Télécharge une nouvelle version pour une ressource existante à partir de l'objet donné.
Actuellement, cette méthode ne peut être utilisée que dans les plugins locaux chargés et télécharger des ressources sans demander d'abord.
Paramètres
L'objet à créer en tant que ressource.
Les types actuellement pris en charge sont :
L'ID de la ressource pour la nouvelle version.
Table d'options contenant des métadonnées de ressources :
- Name – Un string . Nom de la ressource. Par défaut : object.Name.
- Description – A string . Description de la ressource. Par défaut : "Créé avec AssetService:CreateAssetAsync".
- CreatorId – A number .ID du créateur de la ressource.Par défaut : l'utilisateur de Roblox Studio connecté pour le contexte des plugins.Nécessaire pour le contexte d'exécution Open Cloud Luau.
- CreatorType – A Enum.AssetCreatorType . Type de créateur de ressources. Par défaut : Enum.AssetCreatorType.User dans le contexte Plugin. Nécessaire pour le contexte d'exécution Open Cloud Luau.
Retours
Le paire de numéro de version des ressources et de la version du succès Enum.CreateAssetResult.
Échantillons de code
Le code suivant crée une nouvelle version de ressource modèle.
local AssetService = game:GetService("AssetService")
local assetIdToUpdate = 321
local model = Instance.new("Model")
local requestParameters = {
CreatorId = 123,
CreatorType = Enum.AssetCreatorType.User,
}
local ok, result, versionOrUploadErr = pcall(function()
return AssetService:CreateAssetVersionAsync(model, Enum.AssetType.Model, assetIdToUpdate, requestParameters)
end)
if not ok then
warn(`error calling CreateAssetVersionAsync: {result}`)
elseif result == Enum.CreateAssetResult.Success then
print(`success, new asset version: {versionOrUploadErr}`)
else
warn(`upload error in CreateAssetVersionAsync: {result}, {versionOrUploadErr}`)
end
CreateEditableImageAsync
Crée un nouvel objet EditableImage vierge de texture donnée.Les ID de texture non affectées comme rbxthumb:// sont pris en charge.Si vous utilisez une ressource d'image, elle doit être associée et/ou appartenir à un créateur de l'expérience, ou elle doit avoir été créée à l'intérieur de l'expérience.Si le budget de mémoire modifiable spécifique au dispositif est épuisé, la création échouera et cette méthode renverra nil .
Voir la documentation EditableImage pour des considérations spéciales lors de l'utilisation de cette API.
Paramètres
Référence au contenu des ressources stockées externement ou en tant qu'objet dans l'endroit, enveloppant une seule valeur d'une des valeurs Enum.ContentSourceType soutenues.
Table contenant des options pour le créé EditableImage . Actuellement, aucune option n'est disponible puisque la redimensionnalisation via Size n'est pas prise en charge.
Retours
Un nouveau EditableImage contenant l'image fournie.
CreateEditableMeshAsync
Renvoie un nouvel objet EditableMesh créé à partir d'un ID existant EditableMesh ou d'un maillage Content existant.Par défaut, un EditableMesh créé à partir de cette méthode sera de taille fixe afin que les données de maillage ne puissent être modifiées, ajoutées ni supprimées.Une taille fixe EditableMesh consomme moins de mémoire et devrait être préférée lorsque cela est possible.
Si le budget de mémoire modifiable spécifique au dispositif est épuisé, la création échouera et cette méthode renverra nil .
Voir les sections Activation de EditableMesh pour les expériences publiées et Permissions de pour des considérations spéciales lors de l'utilisation de cette API.
Paramètres
Référence au contenu des ressources stockées externement ou en tant qu'objet dans l'endroit, enveloppant une seule valeur d'une des valeurs Enum.ContentSourceType soutenues.
Table d'options contenant des contrôles pour la méthode :
- FixedSize – A bool .La valeur par défaut est true , et le retourné EditableMesh ne vous permettra pas d'ajouter ou de supprimer des sommets, seulement de modifier leurs valeurs.Définir à false si la capacité de changer la topologie du maillage est requise, au détriment de l'utilisation de plus de mémoire.
Retours
La nouvelle instance EditableMesh.
CreateMeshPartAsync
Cette méthode crée un MeshPart avec un CollisionFidelity spécifié, RenderFidelity et FluidFidelity .Comme MeshPart.MeshId est lu seul, cette méthode est pour créer un maillage avec n'importe quel ID de maillage via des scripts, sans avoir à cloner un maillage existant MeshPart.Il lance des erreurs si la création échoue.
Paramètres
Référence au contenu des ressources stockées externement ou en tant qu'objet dans l'endroit, enveloppant une seule valeur d'une des valeurs Enum.ContentSourceType soutenues.
Table d'options contenant une ou plusieurs contrôles pour la méthode :
- CollisionFidelity – La valeur de CollisionFidelity dans la partie résultante.Défaut à Enum.CollisionFidelity.Default si l'option est absente ou si la table options est nil .
- RenderFidelity – La valeur de RenderFidelity dans la partie résultante.Défaut à Enum.RenderFidelity.Automatic si l'option est absente ou si la table options est nil .
- FluidFidelity – La valeur de FluidFidelity dans la partie résultante.Défaut à Enum.FluidFidelity.Automatic si l'option est absente ou si la table options est nil .
Retours
CreatePlaceAsync
Clone un lieu via le templatePlaceID donné et renvoie le PlaceId du nouvel endroit, que vous pouvez utiliser avec TeleportService.L'emplacement de clone s'affiche dans l'inventaire du créateur du lieu avec le nom et la description donnés.
Notez que l'emplacement du modèle doit avoir activé la copie de modèle via les paramètres d'emplacement. Vous ne pouvez pas utiliser cette méthode pour cloner des lieux que vous ne possédez pas.
L'utilisation fréquente de cette API n'est pas recommandée, notamment si les endroits créés contiennent des scripts, car mettre à jour le code dans un grand volume d'endroits devient rapidement impossible.Pour les mondes générés par l'utilisateur, envisagez de sérialiser les créations de l'utilisateur et de les enregistrer dans DataStores à la place.
Paramètres
Nom du nouvel endroit.
Description du nouvel endroit.
Retours
CreatePlaceInPlayerInventoryAsync
Paramètres
Retours
GetAssetIdsForPackage
Renvoie une série d'ID de ressources contenues dans un paquet spécifié.
Paramètres
Retours
ID de ressources contenues dans un paquet spécifié.
GetAudioMetadataAsync
Fournit des métadonnées pertinentes sur une source audio spécifique (artiste, titre, durée, type, etc.).
Paramètres
Liste d'ID de ressources ou de contenu pour lesquelles récupérer des métadonnées. La taille maximale du lot est de 30.
Retours
Tableau d'association de dictionnaires dans le même ordre que la demande, où chaque dictionnaire contient les métadonnées suivantes pour son actif/contenu :
AssetId (chaîne)
Title (chaîne)
Artist (chaîne)
Duration (number) en secondes
AudioType ( Enum.AudioSubType )
Notez que si une erreur se produit lors de la récupération des métadonnées pour l'une des ressources demandées, par exemple l'ID de la ressource n'existe pas, sa table de dictionnaire est toujours incluse dans l'arrêt de l'array retourné, mais elle ne contient que le champ AssetId pour des fins de référence.De plus, si le AudioType ne peut pas être déterminé pour une ressource donnée (peut-être parce que c'est un audio privé), l'entrée du dictionnaire résultant ne contiendra pas d'élément AudioType.
Échantillons de code
local AssetService = game:GetService("AssetService")
local SoundService = game:GetService("SoundService")
local trackIDs = {
SoundService.Sound1.SoundId,
SoundService.Sound2.SoundId,
SoundService.Sound3.SoundId,
SoundService.Sound4.SoundId,
}
local success, result = pcall(function()
return AssetService:GetAudioMetadataAsync(trackIDs)
end)
if success then
for i = 1, #trackIDs do
local contentId = "rbxassetid://" .. result[i].AssetId
if trackIDs[i] == contentId then
print(result[i].Title, "by", result[i].Artist)
else
warn("No metadata fetched for requested asset #" .. tostring(i))
end
end
end
GetBundleDetailsAsync
Cette fonction renvoie des détails du contenu du paquet spécifié.
Si l'ID du paquet n'existe pas, il lance HTTP 400 (Bad Request) . Si bundleId n'est pas convertible en entier, il lance Unable to cast string to int64 .
Paramètres
L'ID du paquet spécifié.
Retours
Dictionnaire avec les paires clé-valeur suivantes contenant des détails sur le paquet spécifié :
Id — ID du paquet (même que l'argument passer bundleId )
Name — Nom du paquet
Description — Description du paquet
BundleType — Chaîne représentant le Enum.BundleType , par exemple "BodyParts" ou "DynamicHead"
Items — Array d'éléments dans le paquet, chacun avec des détails représentés par les clés suivantes :
Id — ID de l'article
Name — Noms de l'article
Type — Type d'objet tel que "Asset".
Échantillons de code
local AssetService = game:GetService("AssetService")
local BUNDLE_ID = 14
local success, result = pcall(function()
return AssetService:GetBundleDetailsAsync(BUNDLE_ID)
end)
if success then
print(result)
--[[
{
["BundleType"] = "BodyParts",
["Description"] = "The year is 5003, Battlebot 5000 must face his mightiest foe, or face becoming obsolete.",
["Id"] = 14,
["Items"] = {
[1] = {...},
[2] = {
["Id"] = 1678225030,
["Name"] = "SinisterBot 5001 Left Arm",
["Type"] = "Asset"
},
[3] = {...},
[4] = {...},
[5] = {...},
[6] = {...},
[7] = {...}
},
["Name"] = "SinisterBot 5001"
}
--]]
end
GetGamePlacesAsync
Renvoie un objet StandardPages qui contient le nom et PlaceId les lieux à l'intérieur de l'expérience actuelle.
Retours
Échantillons de code
Le code suivant imprime le nom et PlaceId de chaque lieu dans l'expérience.
local AssetService = game:GetService("AssetService")
local placePages = AssetService:GetGamePlacesAsync()
while true do
for _, place in placePages:GetCurrentPage() do
print("Name:", place.Name)
print("PlaceId:", place.PlaceId)
end
if placePages.IsFinished then
break
end
placePages:AdvanceToNextPageAsync()
end
PromptCreateAssetAsync
Permet la création d'actifs en expérience pour les utilisateurs en leur demandant de lancer un dialogue de publication.Lorsqu'il est appelé, il présente un dialogue à l'utilisateur, lui permettant d'entrer un nom, une description et de prévisualiser la ressource.Lors de la soumission, il enregistre la ressource dans l'inventaire de l'utilisateur.Ne peut être invoqué que du côté du serveur.
Paramètres
L'utilisateur qui soumet la création d'une ressource.
La ressource à créer. Ne peut pas, actuellement, contenir de scripts ou de nester des ressources non publiques.
Le type de ressource. Actuellement, il ne peut être que Enum.AssetType.Model .
Retours
Le paire d'ID de ressource et de Enum.PromptCreateAssetResult si réussi.
PromptImportAnimationClipFromVideoAsync
Paramètres
Retours
SavePlaceAsync
Enregistre l'état actuel de l'endroit. Gardez à l'esprit les directives et les restrictions suivantes :
- Cette méthode ne fonctionne que pour les lieux créés avec AssetService:CreatePlaceAsync() ou qui ont l'API activée via les paramètres du lieu.
- Cette méthode remplace l'état précédent de l'endroit. Pour annuler une sauvegarde, publiez une version plus ancienne de l'endroit.
- Il y a des cas où des sauvegardes peuvent se produire simultanément dans Studio et sur plusieurs serveurs d'expérience.L'ordre des sauvegardes se produit dans l'ordre dans lequel elles sont appelées.
- Une session de création d'équipe active dans les blocs Studio empêche toute sauvegarde de se produire.
Paramètres
Retours
SearchAudio
Renvoie un objet AudioPages contenant le résultat de la recherche donnée. Ne retournera pas de champs avec des valeurs vides.
Notez que cette méthode a une faible limite de demande HTTP et peut générer une erreur, il doit donc toujours être emballé dans pcall() pour la gestion des erreurs.Les messages d'erreur possibles incluent :
<th>Raison</th></tr></thead><tbody><tr><td>HTTP 429 (Trop de demandes)</td><td><code>Class.AssetService:SearchAudio()</code> a été appelé trop de fois.</td></tr><tr><td>Type inattendu pour les données, tableau attendu null obtenu</td><td>L'argument clé a été filtré.</td></tr></tbody>
Message d'erreur |
---|
Paramètres
Retours
Échantillons de code
This code gets the music assets returned by the keyword "happy" and prints out their titles.
local AssetService = game:GetService("AssetService")
local audioSearchParams = Instance.new("AudioSearchParams")
audioSearchParams.SearchKeyword = "happy"
local success, result = pcall(function()
return AssetService:SearchAudio(audioSearchParams)
end)
if success then
local currentPage = result:GetCurrentPage()
for _, audio in currentPage do
print(audio.Title)
end
else
warn("AssetService error: " .. result)
end
--[[ Returned data format
{
"AudioType": string,
"Artist": string,
"Title": string,
"Tags": {
"string"
},
"Id": number,
"IsEndorsed": boolean,
"Description": string,
"Duration": number,
"CreateTime": string,
"UpdateTime": string,
"Creator": {
"Id": number,
"Name": string,
"Type": number,
"IsVerifiedCreator": boolean
}
}
--]]