Unity/Addressable
提供: 初心者エンジニアの簡易メモ
目次
Addressableとは
外部サーバーで使えるResources
インストール
- Unityメインメニュー/Window/Package Manager/Unity Registryが選択"addressable"を検索
- Addressablesをinstall
Addressableの作り方
- 例として、プレハブを作るのでAssetsの下にResourcesフォルダがなければ作る。
- 適当にプレハブをAssets/Resourcesの下につくる。(例:ButtonGroup)
- inspectorにaddressableのチェックがあるので、チェックを付ける
- チェックをつけると、addressableのpathが生成される(例:ButtonGroup)
- Resources_movedに勝手に移動される。もしくは、作られたファイルをResources以外のdirに入れる。
- 以下SampleScene.csをシーンに連携する
using System.Collections; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; public class SampleScene : MonoBehaviour { void Start() { StartCoroutine(Load()); } IEnumerator Load() { // プレハブ:GameObject、画像:Image、スプライト:Sprite var handle = Addressables.LoadAssetAsync<GameObject>("ButtonGroup"); yield return handle; if (handle.Status == AsyncOperationStatus.Succeeded) { var instance = Instantiate(handle.Result, GameObject.Find("Canvas").transform); } } }
プレビュー実行すると、シーンのCanvasの下に、Addressableで作った、プレハブが表示される。
"Exception encountered in operation CompletedOperation, status=Failed, result= : Exception of type"エラーが出るとき
Addressable化したもののパスが合ってるか確認、PlayModeScript(後述)が、サーバーから取得するようになってないか。
設定確認
- Unityメインメニュー/Window/Addressable/Groups/Profile/ManageProfiles
BuildTarget:[UnityEditor.EditorUserBuildSettings.activeBuildTarget] LocalBuildPath:[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget] LocalLoadPath:{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget] RemoteBuildPath:ServerData/[BuildTarget] RemoteLoadPath:http://localhost/[BuildTarget]
設定変更
設定変更したい場合は、
- Unityメインメニュー/Window/Addressable/Groups/ManageProfiles/Create/NewProfileを選択し、
- 各項目を入力していく
プレイモード選択
- Unityメインメニュー/Window/Addressable/Groups/PlayModeScriptを選択
- Use Asset Database (fastest):Unity内のアセットから
- Simulate Groups (Advanced):依存関係を分析して取得
- Use Existing Build(requires built groups):パックプレイモードで、サーバーから取得
Addressableでビルドしたものを、Addressableを取得
- 上記のPlayModeScriptを"Use Existing Build"へ
- Addressableをビルドする(Unityメインメニュー/Window/Asset Management/Addressables/Groups/Build/New Build/Default Build Script
- プレビュー実行
ちなみにBuildファイルは以下とかdefaultlocalgroup_assets_all_69745f2bc65176429eb31f083306322b.bundleと買った形で出来る。
- Library/com.unity.addressables/aa/WebGL/WebGL
- ServerData/WebGL
Addressableの削除
- Unityメインメニュー/Window/Asset Management/Addressables/Groups
- Build/CleanBuild/AllとContent BuildersとBuild Pipeline Cache
Addressableの再生成
- Unityメインメニュー/Window/Asset Management/Addressables/Groups
- Build/New Build/Default Build Script
プロジェクト以下/ServerData/WebGL/とかにできる
ServerData/WebGL/catalog_v1.0.hash ServerData/WebGL/catalog_v1.0.json ServerData/WebGL/localization-assets-shared_assets_all.bundle ServerData/WebGL/localization-string-tables-chinese(traditional)(zh-tw)_assets_all.bundle ServerData/WebGL/localization-string-tables-english(unitedstates)(en-us)_assets_all.bundle ServerData/WebGL/localization-string-tables-japanese(japan)(ja-jp)_assets_all.bundle
ビルド時のパスを確認
- Assets/AddressableAssetsData/AssetGroups/Default Local Group
- BuildPathとLoadPathに何を設定してるか確認。
- LocalBuildPath:Library/com.unity.addressables/aa/WebGL/WebGL
- LocalLoadPath:{UnityEngine.AddressableAssets.Addressables.RuntimePath}/WebGL
- RemoteBuildPath:ServerData/WebGL
- RemoteLoadPath:ttp://localhost/WebGL
サーバーにAddressableファイルを読み込んで表示
- Assets/AddressableAssetsData/AssetGroups/Default Local Group
- BuildPathにRemoteBuildPathを設定し、
- LoadPathにRemoteLoadPathを設定
- Addressableをビルドし、(Unityメインメニュー/Window/Asset Management/Addressables/Groups/Build/New Build/Default Build Script
- ServerData/WebGLにできたファイルを自分のサーバー(例:ttp://localhost/WebGL/~)へ上げる。
- Unityメインメニュー/Window/Addressable/Groups/Profile/ManageProfilesのRemoteLoadPathをttp://localhost/[BuildTarget]から、自分のサーバー(例:ttp://localhost/WebGL/~)のファイルのある場所へ。
- プレイモードをUse Existing Buildへ
- プレビュー表示すると表示される。
AddressablesのRemoteLoadPathの変更
- Window/Asset Management/Addressables/Groups
- Profile:WebGLを選択
- ManageProfiles
- RemoteLoadPathを変更する
https://qiita.com/tetr4lab/items/1b26755089820b041b4f
参考
https://robamemo.hatenablog.com/entry/2021/01/08/195415