使用遊戲內資產創建功能,您可以允許用戶將他們在遊戲中創建的作品保存到他們的庫存中。您的用戶可以像使用其他資產一樣使用這些遊戲內創作。此外,這些創作在 Roblox 平台上顯示時會歸屬於您的遊戲,因此任何用戶都可以使用歸屬連結來進入您的遊戲並創建他們自己的作品。
例如,您可以允許用戶在遊戲中創建自定義生物作為寵物,並讓他們將最喜愛的寵物保存到他們的庫存中。您完全可以控制用戶可以修改和保存的對象。用戶可以在他們的個人資料中展示他們的創作,並標明來源於您的遊戲,從而提高您的遊戲的能見度。
支持的資產類型和限制
就像平台上的所有資產一樣,遊戲內創作需遵循 資產管理。目前,您只能允許用戶從您的遊戲創建 包。這些包不能包含任何腳本或私人資產,例如音頻、視頻和嵌套包。如果系統在可以由用戶保存的包中檢測到腳本或私人資產,則會通過隱藏保存提示來阻止遊戲內保存操作。
當您運行或測試遊戲並將腳本或私人資產作為遊戲內創作的一部分時,將無法保存並向 Studio 的 輸出窗口 或 開發者控制台 提示錯誤消息。
啟用遊戲內資產創建
要為您的用戶啟用遊戲內資產創建,請在伺服器端腳本中使用 AssetService:PromptCreateAssetAsync() API 方法,並結合其他創建邏輯。指定您希望啟用此功能的遊戲中的實例,設置自定義觸發器(例如 UI 圖標)以調用該方法,並監聽用於保存資產的客戶端遠程事件。
AssetService:PromptCreateAssetAsync() 需要以下參數:
當伺服器調用 AssetService:PromptCreateAssetAsync() 時,將在客戶端顯示 提交包 對話框,這樣觸發保存操作的用戶可以為包輸入名稱和描述。Roblox 提供了對話框 UI,因為保存工作流程是一項平台級功能。
以下範例伺服器端腳本提示用戶保存他們在遊戲中繪製的汽車:
-- 定義 AssetService 變量
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("成功上傳,AssetId:", assetId)
else
print("收到結果", result)
end
else
print("錯誤")
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 中編輯地方以引用該設計。
創建後和歸屬
用戶從您的遊戲創建並保存資產後,他們可以在以下位置找到該資產:
當用戶在朋友的個人資料或庫存中看到遊戲內創作時,他們會看到該資產創建的原始遊戲的歸屬。用戶可以點擊歸屬連結,以重定向到遊戲頁面,這樣他們就可以加入遊戲並創建自己的作品。