使用體驗資產創建功能,您可以允許使用者將在體驗中創作的創作儲存到他們的庫存中。您的使用者可以像其他任何素材一樣使用這些經驗創作。此外,當這些創作在 Roblox 平台上顯示時,會為您的體驗增添貢獻,因此任何使用者都可以使用貢獻鏈接來到您的體驗並創建自擁有的體驗。
例如,您可以啟用使用者在體驗中創建自訂生物作為寵物,並允許他們將最愛的寵物儲存到庫存中。您有完全控制來指定使用者可以從您的體驗中修改和儲存哪些對象。使用者可以轉而在他們的個人檔案上顯示他們的創作,並附上對你的體驗的認可,提升你的體驗可見度。
支持的資產類型和限制
和平台上的所有資產一樣,體驗內的創作也受到 資產管理 的限制。目前,您只能允許使用者從您的體驗中創建 包裝。這些包不能包含任何腳本或私有資產,例如音訊頻、視頻和嵌套包。如果系統偵測到包裝中的使用者可以儲存的腳本或私有資產,它會阻止使用者體驗中的儲存操作,隱藏使用者的儲存提示。
當您執行或測試體驗時,並將腳本或私有資產作為體驗作品的一部分時,它無法儲存並提示錯誤訊息到 Studio 輸出窗口 或 開發者控制台。
啟用體驗內資產創作品
若要啟用使用者體驗內的資產創建,請在服務器側腳指令碼中使用 AssetService:PromptCreateAssetAsync() API方法,以及其他創建邏輯。指定您體驗中想要啟用此功能的實例、設置自訂觸發器(例如使用者介面圖示)來呼叫方法,並聆聽客戶端遠端事件來儲存資產。
AssetService:PromptCreateAssetAsync() 使用以下參數:
- 一個 Player 代表提交資產作品建的用戶的對象。
- 一個 Instance 代表創作品資產的對象。
- 目前受限於 Enum.AssetType 的 Enum.AssetType.Model 。
當伺服器呼叫 AssetService:PromptCreateAssetAsync() 時,會提示客戶端上的 提交包 對話框,因此啟動保存操作的使用者可以輸入包裝的名稱和說明。Roblox 提供對話用戶介面預裝箱,因為儲存工作流是平台級功能。
以下示例服務器腳本提示用戶儲存他們在體驗中繪畫的汽車:
體驗內資產創建的範例腳本
-- 定義資產服務變量
local AssetService = game:GetService("AssetService")
-- 設定 PromptCreateAssetAsync() 以提示提交對話框
local function CreateAsset(player, instance)
local complete, result, assetId = pcall(function()
return AssetService:PromptCreateAssetAsync(player, instance, Enum.AssetType.Model)
end)
if complete then
if result == Enum.PromptCreateAssetResult.Success then
print("successfully uploaded, AssetId:", assetId)
else
print("Received result", result)
end
else
print("error")
print(result)
end
end
-- 車輛繪製邏輯已省略
-- 添加事件處理器
local function onUserPublish(player, promptObject)
-- 使用者儲存經體驗的預設顏色的車輛實例
if promptObject.Name == "car" then
CreateAsset(player, car)
elseif promptObject.Name == "CarPaintYellow" or promptObject.Name == "CarPaintBlue" or promptObject.Name == "CarPaintBlack" or promptObject.Name == "CarPaintRed" then
PaintCarColor(promptObject.Name)
end
end
PublishEvent.OnServerEvent:Connect(onUserPublish)
體驗內創建演示競技場展示了你如何使用此功能的一個例子。您可以加入演示,走過體驗創建工作流程作為使用者,或在 Studio 編輯地點以參考設計。
創建後和認可後
使用者創建並保存從體驗中的資產後,可以在以下位置找到它:
當使用者在朋友的個人資料或庫存中看到體驗創作時,他們會看到資產創建於原始體驗的歸屬。使用者可以點擊歸屬鏈接轉到體驗頁面,因此他們可以加入體驗並創建自擁有的體驗。