AssetService

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ

บริการทรัพยากร เป็นบริการที่ไม่ซ้ำกันที่จัดการคำถามที่เกี่ยวข้องกับทรัพยากรกับ API เว็บของ Roblox

สรุป

วิธีการ

คุณสมบัติ

วิธีการ

CreateEditableImage

สร้าง EditableImage โดยค่าความละเอียดจะถูกตั้งไว้ที่ 512×512 โดยค่าเริ่มต้น แต่คุณสามารถระบุขนาดที่แตกต่างกันโดยใช้ตารางตัวเลือกของวิธีการ

หากงบหน่วยความจำที่สามารถแก้ไขได้สำหรับอุปกรณ์ถูกใช้หมดแล้ว การสร้างจะล้มเหลวและวิธีนี้จะคืน nil

พารามิเตอร์

editableImageOptions: Dictionary

ตารางตัวเลือกที่มีการควบคุมสำหรับวิธี:

  • Size – A Vector2 ที่ระบุความกว้างและความสูงที่ต้องการของภาพ
ค่าเริ่มต้น: ""

ส่งค่ากลับ

CreateEditableMesh

สร้างใหม่, ว่างเปล่า EditableMesh .จุด, สามเหลี่ยม, และคุณสมบัติของพวกเขาสามารถเพิ่มได้อย่างไดนามิกให้กับมันหากงบหน่วยความจำที่สามารถแก้ไขได้สำหรับอุปกรณ์ถูกใช้หมดแล้ว การสร้างจะล้มเหลวและวิธีนี้จะส่งคืน nil

พารามิเตอร์

editableMeshOptions: Dictionary

ตารางที่มีตัวเลือกสำหรับการสร้าง EditableMesh .ขณะนี้ไม่มีตัวเลือกที่มีอยู่เนื่องจาก FixedSize จะเป็น false เสมอสำหรับเมชที่ว่างเปล่าที่สามารถแก้ไขได้

ค่าเริ่มต้น: ""

ส่งค่ากลับ

CreateSurfaceAppearance

พารามิเตอร์

content: Dictionary
ค่าเริ่มต้น: ""

ส่งค่ากลับ

CreateAssetAsync

ผลตอบแทน

อัปโหลดสินทรัพย์ใหม่ไปยัง Roblox จากวัตถุที่กำหนด

ในปัจจุบันวิธีนี้สามารถใช้งานได้เฉพาะในส่วนขยายที่โหลดในท้องถิ่นและอัปโหลดสินทรัพย์โดยไม่ต้องแจ้งเตือนก่อน

พารามิเตอร์

object: Object

วัตถุที่จะถูกสร้างขึ้นเป็นสินทรัพย์

ค่าเริ่มต้น: ""
assetType: Enum.AssetType

ประเภทที่สนับสนุนในปัจจุบันคือ:

ค่าเริ่มต้น: ""
requestParameters: Dictionary

ตารางตัวเลือกที่มีเมตาดาต้าสินทรัพย์:

  • Name – ชื่อของสินทรัพย์เป็นสตริง ค่าเริ่มต้นคือ [object.Name]
  • Description – คำอธิบายของสินทรัพย์เป็นข้อความ ค่าเริ่มต้นคือ "Created with AssetService:CreateAssetAsync"
  • CreatorId – ID ของผู้สร้างสินทรัพย์เป็นตัวเลขค่าเริ่มต้นสำหรับผู้ใช้ Roblox Studio ที่ล็อกอินสำหรับบริบทของแพลตฟอร์มจำเป็นสำหรับบริบทการดําเนินการ Open Cloud Luau
  • CreatorTypeEnum.AssetCreatorType บ่งบอกประเภทของผู้สร้างสินทรัพย์ค่าเริ่มต้นเป็น Enum.AssetCreatorType.User ในบริบทของปลั๊กอินจำเป็นสำหรับบริบทการดําเนินการ Open Cloud Luau
  • IsPackage – ค่าบูลีเนียน ใช้ได้เฉพาะกับประเภท Enum.AssetType.Model เท่านั้น ค่าเริ่มต้นคือ true
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

คู่ Enum.CreateAssetResult และรหัสสินทรัพย์หากประสบความสำเร็จ

ตัวอย่างโค้ด

The following code creates a Mesh asset from an EditableMesh.

AssetService:CreateAssetAsync

local AssetService = game:GetService("AssetService")
local editableMesh = AssetService:CreateEditableMesh()
-- add vertices, faces, and uvs to the mesh
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 – A string . ชื่อของสินทรัพย์ ค่าเริ่มต้น: object.Name
  • Description – A string . คำอธิบายของสินทรัพย์ ค่าเริ่มต้น: "สร้างด้วย AssetService:CreateAssetAsync"
  • CreatorId – A number .รหัสของผู้สร้างสินทรัพย์ค่าเริ่มต้น: ผู้ใช้ Roblox Studio ที่ล็อกอินสําหรับบริบทของแพลตฟอร์มจำเป็นสำหรับบริบทการดําเนินการ Open Cloud Luau
  • CreatorType – A Enum.AssetCreatorType . ครีเอเตอร์ปกติ: Enum.AssetCreatorType.User ในบริบทของปลั๊กอิน จำเป็นสำหรับบริบทการดําเนินการ Open Cloud Luau ที่เกิดขึ้น
  • IsPackage – A bool . สามารถใช้ได้กับประเภท Enum.AssetType.Model เท่านั้น ค่าเริ่มต้น: ใช่
ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

คู่เวอร์ชันของ Enum.CreateAssetResult และทรัพยากรและหมายเลขเวอร์ชันถ้าสําเร็จ

ตัวอย่างโค้ด

The following code creates a new Model asset version.

AssetService:CreateAssetVersionAsync

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 ที่เต็มไปด้วยเทกเจอร์ที่กำหนดรหัสเทกเจอร์ที่ไม่ใช่สินทรัพย์เช่น rbxthumb:// ได้รับการสนับสนุนหากใช้สินทรัพย์รูปภาพ ต้องเกี่ยวข้องกับและ/หรือเป็นเจ้าของโดยผู้สร้างประสบการณ์ หรือต้องถูกสร้างขึ้นภายในประสบการณ์หากงบหน่วยความจำที่สามารถแก้ไขได้สำหรับอุปกรณ์ถูกใช้หมดแล้วการสร้างจะล้มเหลวและวิธีนี้จะส่งคืน nil

ดูคู่มือ EditableImage สำหรับการพิจารณาพิเศษเมื่อใช้ API นี้

พารามิเตอร์

content: Content

การอ้างอิงถึงเนื้อหาทรัพย์สินที่เก็บไว้ภายนอกหรือเป็นวัตถุภายในสถานที่โดยห่อหุ้มมูลค่าเดียวของหนึ่งในค่า Enum.ContentSourceType ที่สนับสนุน

ค่าเริ่มต้น: ""
editableImageOptions: Dictionary

ตารางที่มีตัวเลือกสําหรับการสร้าง EditableImage ปัจจุบันไม่มีตัวเลือกที่ใช้งานได้เนื่องจากไม่สนับสนุนการปรับขนาดผ่าน Size

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ใหม่ EditableImage ที่มีภาพที่ให้ไว้

CreateEditableMeshAsync

ผลตอบแทน

ส่งคืนวัตถุใหม่ EditableMesh ที่สร้างจาก ID ที่มีอยู่แล้ว EditableMesh หรือเมช Content IDโดยค่าเริ่มต้น การสร้าง EditableMesh จากวิธีนี้จะมีขนาดคงที่เพื่อให้ข้อมูลเมชจะสามารถแก้ไขได้เท่านั้น ไม่สามารถเพิ่มหรือลบได้ขนาดคงที่ EditableMesh ใช้พื้นที่น้อยลงและควรได้รับการยอมรับเมื่อเป็นไปได้

หากงบหน่วยความจำที่สามารถแก้ไขได้สำหรับอุปกรณ์ถูกใช้หมดแล้ว การสร้างจะล้มเหลวและวิธีนี้จะส่งคืน nil

ดูส่วน เปิดใช้งาน EditableMesh สำหรับประสบการณ์ที่เผยแพร่ และ สิทธิ์ ของ EditableMesh สำหรับการพิจารณาพิเศษเมื่อใช้ API นี้

พารามิเตอร์

content: Content

การอ้างอิงถึงเนื้อหาทรัพย์สินที่เก็บไว้ภายนอกหรือเป็นวัตถุภายในสถานที่โดยห่อหุ้มมูลค่าเดียวของหนึ่งในค่า Enum.ContentSourceType ที่สนับสนุน

ค่าเริ่มต้น: ""
editableMeshOptions: Dictionary

ตารางตัวเลือกที่มีการควบคุมสำหรับวิธี:

  • FixedSize – A bool .ค่าเริ่มต้นคือ true และ EditableMesh ที่ส่งกลับจะไม่อนุญาตให้คุณเพิ่มหรือลบเหลี่ยมมุม แต่จะแก้ไขค่าของพวกเขาเท่านั้นตั้งค่าเป็น false หากต้องการเปลี่ยนโทโพโลยีเมชที่มีความสามารถในการเปลี่ยนแปลงในราคาของการใช้หน่วยความจำเพิ่มเติม
ค่าเริ่มต้น: ""

ส่งค่ากลับ

อินสแตนซ์EditableMesh

CreateMeshPartAsync

ผลตอบแทน

วิธีนี้สร้าง MeshPart ด้วย CollisionFidelity ที่กำหนดไว้ RenderFidelity และ FluidFidelityเนื่องจาก MeshPart.MeshId เป็นการอ่านเฉพาะ วิธีนี้ใช้สำหรับการสร้างเมชกับ ID เมชใดๆ ผ่านสคริปต์โดยไม่ต้องโคลนเมชที่มีอยู่แล้ว MeshPartมันโยนข้อผิดพลาดหากการสร้างล้มเหลว

พารามิเตอร์

meshContent: Content

การอ้างอิงถึงเนื้อหาทรัพย์สินที่เก็บไว้ภายนอกหรือเป็นวัตถุภายในสถานที่โดยห่อหุ้มมูลค่าเดียวของหนึ่งในค่า Enum.ContentSourceType ที่สนับสนุน

ค่าเริ่มต้น: ""
options: Dictionary

ตารางตัวเลือกที่มีการควบคุมหนึ่งหรือมากกว่าสำหรับวิธี:

  • CollisionFidelity – ค่าของ CollisionFidelity ในส่วนที่ได้รับในที่สุดค่าเริ่มต้นคือ หากตัวเลือกหายไปหรือตาราง ไม่มีอยู่
  • RenderFidelity – ค่าของ RenderFidelity ในส่วนที่ได้รับในที่สุดค่าเริ่มต้นคือ หากตัวเลือกหายไปหรือตาราง ไม่มีอยู่
  • FluidFidelity – ค่าของ FluidFidelity ในส่วนที่ได้รับในที่สุดค่าเริ่มต้นคือ หากตัวเลือกหายไปหรือตาราง ไม่มีอยู่
ค่าเริ่มต้น: "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

ผลตอบแทน

ส่งคืนคอลเลกชันของรหัสสินทรัพย์ที่อยู่ในแพคเกจที่กำหนด

พารามิเตอร์

packageAssetId: number
ค่าเริ่มต้น: ""

ส่งค่ากลับ

รหัสสินทรัพย์ที่อยู่ในแพคเกจที่กำหนดไว้

GetAudioMetadataAsync

ผลตอบแทน

ให้ข้อมูลเมทาดาต้อย่างเกี่ยวข้องเกี่ยวกับแหล่งเสียงเฉพาะ (ศิลปิน ชื่อ ระยะเวลา ประเภท ฯลฯ)

พารามิเตอร์

idList: Array

รายการของรหัสสินทรัพย์หรือรหัสเนื้อหาที่จะดึงข้อมูลเมทาดาต้า ขนาดรุ่นสูงสุดคือ 30

ค่าเริ่มต้น: ""

ส่งค่ากลับ

รายการตารางสารานุกรมในลำดับเดียวกับคำขอที่มีแต่ละสารานุกรมมีเมทาดาตาสำหรับสินทรัพย์/เนื้อหาต่อไปนี้:

  • AssetId (สตริง)

  • Title (สตริง)

  • Artist (สตริง)

  • Duration (จํานวน) ในวินาที

  • AudioType ( Enum.AudioSubType )

โปรดทราบว่าหากเกิดข้อผิดพลาดในการดึงข้อมูลอ้างอิงสําหรับสินทรัพย์ใดๆ ที่ร้องขอ เช่น รหัสสินทรัพย์ไม่มีอยู่ ตารางสารบัญของมันยังคงอยู่ในคอลเลกชันที่ส่งคืน แต่มันมีเฉพาะฟิลด์ 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

ผลตอบแทน

ชุดรวม

หากรหัสบันทึกไม่มีอยู่ มันจะโยน HTTP 400 (Bad Request) หาก bundleId ไม่สามารถแปลงเป็นจํานวนเต็มได้ มันจะโยน Unable to cast string to int64

พารามิเตอร์

bundleId: number

ชุดรวม

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ชุดรวม:

  • 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 สถานที่ภายในประสบการณ์ปัจจุบัน


ส่งค่ากลับ

ตัวอย่างโค้ด

The following code prints the name and PlaceId of each place in the experience.

AssetService:GetGamePlacesAsync

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 และรหัสสินทรัพย์หากประสบความสำเร็จ

PromptImportAnimationClipFromVideoAsync

ผลตอบแทน

พารามิเตอร์

player: Player
ค่าเริ่มต้น: ""
progressCallback: function
ค่าเริ่มต้น: ""

ส่งค่ากลับ

SavePlaceAsync

()
ผลตอบแทน

บันทึกสถานะของสถานที่ปัจจุบัน ทำงานได้เฉพาะสำหรับสถานที่ที่สร้างด้วย AssetService:CreatePlaceAsync() หรือมี API เปิดใช้งานผ่านการตั้งค่าสถานที่


ส่งค่ากลับ

()

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
}
}
--]]

อีเวนต์