AssetService

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

资产服务 是一种非复制的服务,用于处理 Roblox 网 API 相关的资产查询。

概要

方法

属性

方法

CreateEditableImage

创建一个新的 EditableImage 。默认情况下,解析度设置为 512×512,但您可以使用方法的选项表指定不同的尺寸。

如果设备特定的可编辑内存预算已耗尽,创建失败,该方法返回 nil

参数

editableImageOptions: Dictionary

包含方法控件的选项表:

  • Size – 一种 Vector2 指定图像所需宽度和高度的方法。
默认值:""

返回

CreateEditableMesh

创建一个新的、空的 EditableMesh 。边顶点、三角形和其属性可以动态添加到它。如果装置特定的可编辑内存预算已耗尽,创建将失败,该方法将返回 nil

参数

editableMeshOptions: Dictionary

包含创建的EditableMesh选项的表。目前没有可用选项,因为 将永远是空的可编辑网格。

默认值:""

返回

CreateAssetAsync

暂停

从给定的对象上传新资产到 Roblox。

目前,此方法只能在本地加载的插件中使用并上传资产,而不需要先提示。

参数

object: Object

要创建为资产的对象。

默认值:""
assetType: Enum.AssetType

目前支持的类型是:

默认值:""
requestParameters: Dictionary

包含资产元数据的选项表:

  • Name – 资产名称作为字符串。默认为 [object.Name]
  • Description – 资产的描述为字符串。默认为 "Created with AssetService:CreateAssetAsync"
  • CreatorId – 资产创建者ID作为数字。默认为登录的 Roblox Studio 用户获取插件上下文。需要用于打开云 Luau 执行上下文。
  • CreatorTypeEnum.AssetCreatorType 指示资产创建者类型。默认为 Enum.AssetCreatorType.User 在插件上下文中。需要用于打开云 Luau 执行上下文。
  • IsPackage – 布林值,仅适用于 Enum.AssetType.Model 类型。默认为 true
默认值:"nil"

返回

如果成功,则 Enum.CreateAssetResult 和资产 ID 对如下所示。

代码示例

以下代码从可编辑的网格中创建一个网格资产。

资产服务:创建资产异步

local AssetService = game:GetService("AssetService")
local editableMesh = AssetService:CreateEditableMesh()
-- 将垂直、面和uv添加到网格
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

暂停

从给定的对象上传新版本的现有资产。

目前,此方法只能在本地加载的插件中使用并上传资产,而不需要先提示。

参数

object: Object

要创建为资产的对象。

默认值:""
assetType: Enum.AssetType

目前支持的类型是:

默认值:""
assetId: number

新版本的资产ID。

默认值:""
requestParameters: Dictionary

包含资产元数据的选项表:

  • Name – 一个 string 。资产名称。默认:object.Name。
  • Description – 一个 string 。资产的描述。默认值:“用 AssetService:CreateAssetAsync 创建”。
  • CreatorId – A number .资产创建者的ID。默认:登录的 Roblox Studio 用户为插件上下文。需要用于打开云 Luau 执行上下文。
  • CreatorType – 一个 Enum.AssetCreatorType 。资产创建者类型。默认值:在插件上下文中的 Enum.AssetCreatorType.User 。需要在开放云 Luau 执行上下文中。
  • IsPackage – 一个 bool . 仅适用于 Enum.AssetType.Model 类型。默认值:真实。
默认值:"nil"

返回

如果成功,则 Enum.CreateAssetResult 和资产版本号对如下所示。

代码示例

以下代码创建了新的模型资产版本。

资产服务:创建资产版本异步

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

暂停

创建一个新的 EditableImage 对象,其中包含指定的纹理。非资产纹理ID,例如 rbxthumb:// ,是支持的。如果使用图像资产,它必须与体验的创建者相关并/或拥有,或者必须已在体验中创建。如果装置特定的可编辑内存预算已耗尽,创建将失败,该方法将返回 nil

查看 EditableImage 文档,了解使用此 API 时的特殊考虑。

参数

content: Content

参考存储在外部或放置在地方内的资产内容,包装一个单个值的支持的 Enum.ContentSourceType 值。

默认值:""
editableImageOptions: Dictionary

包含创建 EditableImage 的选项的表。目前由于不支持通过 Size 调整大小,没有可用的选项。

默认值:""

返回

一个新的 EditableImage 包含提供的图像。

CreateEditableMeshAsync

暂停

返回一个从现有 EditableMesh 或网格 EditableMesh ID中创建的新对象 Content。默认情况下,从此方法创建的 EditableMesh 将固定大小,使网格数据只能修改而不能添加或删除。固定大小 EditableMesh 消耗较少的内存,应在可能的情况下优先使用。

如果设备特定的可编辑内存预算已耗尽,创建将失败,该方法将返回 nil

请参阅启用可编辑网格对发布体验和权限部分,了解使用此 API 时的特殊考虑。

参数

content: Content

参考存储在外部或放置在地方内的资产内容,包装一个单个值的支持的 Enum.ContentSourceType 值。

默认值:""
editableMeshOptions: Dictionary

包含方法控件的选项表:

  • FixedSize – A bool .默认值为 true , 返回的 EditableMesh 不会允许您添加或移除边点,只能修改其值。如果需要更改网格顶ологи,设置为 false,以牺牲使用更多内存。
默认值:""

返回

新的 EditableMesh 实例。

CreateMeshPartAsync

暂停

这个方法创建了一个 MeshPart 与指定的 CollisionFidelity , RenderFidelityFluidFidelity 。因为 MeshPart.MeshId 是只读的,这个方法是通过脚本创建任何网格ID的网格,而不需要克隆现有的 MeshPart 。如果创建失败,它会抛出错误。

参数

meshContent: Content

参考存储在外部或放置在地方内的资产内容,包装一个单个值的支持的 Enum.ContentSourceType 值。

默认值:""
options: Dictionary

包含方法一个或多个控件的选项表:

默认值:"nil"

返回

CreatePlaceAsync

暂停

通过给定的 templatePlaceID 克隆一个地方,并返回新地方的 PlaceId,您可以使用 TeleportService 使用。克隆位置显示在位置创建者的库存中,带有给定的名称和描述。

请注意,模板位置必须通过位置设置启用模板复制。你不能使用这种方法来克隆你不拥有的地点。

不建议频繁使用此 API,尤其是如果创建的地点包含脚本,因为快速更新代码在大量地点上变得不可行。对于用户生成的世界,考虑将用户创建物序列化并保存到 DataStores 中。

参数

placeName: string

新地方的名称。

默认值:""
templatePlaceID: number

PlaceId 的地方进行克隆。

默认值:""
description: string

新地方的描述。

默认值:""

返回

PlaceId 新地方的。

CreatePlaceInPlayerInventoryAsync

暂停

参数

player: Instance
默认值:""
placeName: string
默认值:""
templatePlaceID: number
默认值:""
description: string
默认值:""

返回

GetAssetIdsForPackage

暂停

返回包含在指定包中的一组资产ID的阵列。

参数

packageAssetId: number
默认值:""

返回

包含在特定包中的资产 ID。

GetAudioMetadataAsync

暂停

提供关于特定音频来源(艺术家、标题、时长、类型等)的相关元数据。

参数

idList: Array

用于检索元数据的资产或内容ID阵列。最大批量大小为30。

默认值:""

返回

与请求相同顺序的词典表阵列,每个词典包含其资产/内容的以下元数据:

  • AssetId (字符串)

  • Title (字符串)

  • Artist (字符串)

  • Duration (数字) 秒内

  • AudioType ( Enum.AudioSubType )

请注意,如果在获取请求资产的元数据时出错,例如资产ID不存在,其词典表仍然包含在返回的阵列中,但仅包含AssetId字段用于参考目的。此外,如果不能确定给定资产(也许因为它是私人音频)的 AudioType,结果词典将不包含 AudioType 条目。

代码示例


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

暂停

该函数返回指定包的内容详情。

如果包裹 ID 不存在,它会抛出 HTTP 400 (Bad Request) 。如果 bundleId 不可转换为整数,它会抛出 Unable to cast string to int64

参数

bundleId: number

指定包的 ID。

默认值:""

返回

包含以下键值对描述指定包的详细信息的词典:

  • Id — 包裹 ID (与传递的 bundleId 参数相同)

  • Name — 包裹名称

  • Description — 包裹描述

  • BundleType — 代表 Enum.BundleType 的字符串,例如 "BodyParts""DynamicHead"

  • Items — 包中的项目阵列,每个都通过以下键来表示详细信息:

    • Id — 物品ID

    • Name — 项目名称

    • Type — 物品类型,如 "Asset"

代码示例

Getting Bundle Details

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

暂停

返回一个 StandardPages 对象,包含当前体验中的名称和 PlaceId 地点。


返回

代码示例

以下代码打印体验中每个地方的名称和 PlaceId

资产服务:获取游戏地点异步

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

暂停

允许用户通过提示发布对话创建经验中的资产。调用时,它向用户提供对话框,允许他们输入名称、描述和预览资产。提交后,将资产保存到用户的库存中。只能在服务器端调用。

参数

player: Player

提交资产创建的用户。

默认值:""
instance: Instance

要创建的资产。目前无法包含脚本或嵌套非公共资产。

默认值:""
assetType: Enum.AssetType

资产类型。目前只能是 Enum.AssetType.Model

默认值:""

返回

如果成功,则 Enum.PromptCreateAssetResult 和资产 ID 对如下所示。

PromptImportAnimationClipFromVideoAsync

暂停

参数

player: Player
默认值:""
progressCallback: function
默认值:""

返回

SavePlaceAsync

()
暂停

保存位置的当前状态。请记住以下指导方针和限制:

  • 此方法仅适用于使用 AssetService:CreatePlaceAsync() 创建的地方或通过地方设置启用 API 的地方。
  • 该方法覆盖了位置的前一个状态。要恢复保存,发布较旧版本的位置。
  • 有情况下,保存可以同时在工作室和多个体验服务器发生。保存的顺序发生在它们被调用的顺序。
  • 工作室中的激活团队创建会话将所有保存从发生中阻止。

参数

requestParameters: Dictionary
默认值:""

返回

()

SearchAudio

暂停

返回包含给定搜索结果的 AudioPages 对象。不会返回空值的字段。

请注意,该方法具有低 HTTP 请求限制,可能会发生错误,因此应始终包含在 pcall() 中进行错误处理。可能的错误消息包括:


<th>原因</th>
</tr>
</thead>
<tbody>
<tr>
<td>HTTP 429(请求过多)</td>
<td><code>Class.AssetService:SearchAudio()</code> 已调用过多次。</td>
</tr>
<tr>
<td>数据的预期类型不匹配,预期阵列为 null</td>
<td>关键字参数被过滤。</td>
</tr>
</tbody>
错误消息

参数

searchParameters: AudioSearchParams
默认值:""

返回

代码示例

This code gets the music assets returned by the keyword "happy" and prints out their titles.

Getting Music Search 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
}
}
--]]

活动