1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Roblox】Marketplace のアニメーションを使いたい① ~ Marketplace から取得する方法 ~

1
Last updated at Posted at 2026-02-11

はじめに

Marketplace のアニメーションを 自分のプレースに保存する方法です。

:point_up:事前準備

今回は、ModuleScript にコードを書きます。
ReplicatedStorage に AssetSearch という名前で作成します。
image.png

コマンドバーで実行するので、コマンドバーを表示します。
(ウィンドウ ⟩ スクリプト ⟩ コマンドバー)
私はマルチコマンドバーを有効にしています。
(ファイル ⟩ ベータ機能 ⟩ マルチラインコマンドバー)
image.png

API リファレンス AssetService.LoadAssetAsync() によると
自分が所有していないアセットを読み込むには、Roblox Studio 側の設定が必要のようです。
以下は引用です。
(私の場合、無効化しているプロジェクトでもスクリプトは動作したのですが、うまくいかない場合は見てみるといいかもしれません。)

InsertService:LoadAsset()とは異なり、このメソッドはサードパーティ(体験作成者が所有していないアセット)によって作成された公開アセットを読み込むことができます。この機能を有効にするには、Studioの体験設定でサードパーティアセットの読み込みを許可をオンにします。
この設定が無効の場合(デフォルトでは無効)、LoadAssetAsyncは体験作成者が所有しているアセットのみを読み込み、古いInsertService:LoadAsset()セキュリティチェックと同様に動作します。

:golfer:アセットID をもとにアニメーションを取得する

Marketplace で アセットID を確認します。
catalog/ に続く数字がアセットのIDです。
image.png

スクリプト(AssetSearch):

local AssetSearch = {}
local AssetService = game:GetService("AssetService")

function AssetSearch.AssetServiceLoadAsset(assetId: number)
	local success, model = pcall(AssetService.LoadAssetAsync, AssetService, assetId)
	if success and model then
		print("✅モデルが正常に読み込まれました")
		model.Name = `{model.Name}_{assetId}`
		model.Parent = workspace
	else
		warn("🟨モデルの読み込みに失敗しました: ", model) -- 'model'にはエラーメッセージが含まれます
	end
end

return AssetSearch

関数の呼び出し例:

local AssetSearch = require(game.ReplicatedStorage.AssetSearch)
AssetSearch.AssetServiceLoadAsset(14353423348)

コマンドバーから実行しました。
image.png

実行結果
Workspace 直下にモデルが保存されます。
image.png

:golfer:バンドルIDをもとにアニメーションを取得する

Marketplace で バンドルID を確認します。
bundles/ に続く数字がバンドルのIDです。
image.png

スクリプト(AssetSearch):

local AssetSearch = {}

local AssetService = game:GetService("AssetService")

-- assetId の配列を渡して、アセットのモデルを読み込む。保存先は、Workspace.LoadedAssets フォルダ(新規作成)
function AssetSearch.AssetServiceLoadAssetArray(assetIds: {number})
	local folder = Instance.new("Folder")
	folder.Name = "LoadedAssets"
	folder.Parent = workspace
	
	local successCount = 0
	for i, assetId in assetIds do
		local success, model = pcall(AssetService.LoadAssetAsync, AssetService, assetId)
		if success and model then
			model.Name = `{model.Name}_{i}_{assetId}`
			model.Parent = folder
			successCount += 1
		else
			warn(`🟨モデルの読み込みに失敗しました: [{i}]{assetId}: {model}`) -- 'model'にはエラーメッセージが含まれます
		end		
	end
	print(`🔵読み込み完了: {successCount} / {#assetIds} 件成功しました。 Workspace.{folder.Name} に保存しました。`)
end

-- Bundle のもつアセットを配列で取得する。 bundleId、 item.Type を指定
function AssetSearch.GetBundleAssets(bundleId, itemType: string)
	local resultAssets = {}
	local success, bundleInfo = pcall(function()
		return AssetService:GetBundleDetailsAsync(bundleId)
	end)
	if success then
		for _, item in bundleInfo.Items do
			if item.Type == itemType then
				table.insert(resultAssets, item)
			end
		end
	else
		warn("🟨情報の取得に失敗しました: ", bundleInfo)
	end	
	print(`🔵取得処理完了: BundleId: {bundleInfo.Id}, BundleName: {bundleInfo.Name}, 対象: {#resultAssets} / {#bundleInfo.Items} 件`)	
	return resultAssets
end

return AssetSearch

関数の呼び出し例:

local AssetSearch = require(game.ReplicatedStorage.AssetSearch)
local assets = AssetSearch.GetBundleAssets(2623795, "Asset")
if #assets > 0 then
	local assetIds = {}
	for _, item in assets do
		table.insert(assetIds, item.Id)
	end
	AssetSearch.AssetServiceLoadAssetArray(assetIds)
end

コマンドバーから実行しました。
image.png

実行結果:
Workspace 直下に LoadedAssets フォルダを作成して、保存します。
バンドルに複数アセットが入っているので、モデルも複数あります。
image.png

おわりに

取得したアニメーションを見てみます。

保存した Model 内にアニメーションがあるので、アニメーションIDをメモします。AnimationIdid= の数字部分を使います。
image.png

アニメーションを再生するためのキャラクターを追加します。
Rthro アバターを選びました。
スクリーンショット 2026-02-11 222937.png

アニメーションエディタを開き、追加したキャラクターを選択します。「Rig」が追加されます。
うまく映っていないのですが、アニメーションエディタの「顔編集」上のあたりに「…」があります。
インポート ⟩ Robloxから を選択します。
スクリーンショット 2026-02-11 223128.png

AssetConfiguration が表示されるので、メモしておいたアニメーションのID(数字部分)を入力してインポートします。
スクリーンショット 2026-02-11 223250.png

再生ボタンを押してアニメーションを見ます。

参考

公式リファレンス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?