facebook twitter hatena line email

Unity/Addressable

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

Addressableとは

外部サーバーで使えるResources

インストール

  1. Unityメインメニュー/Window/Package Manager/Unity Registryが選択"addressable"を検索
  2. Addressablesをinstall

Addressableの作り方

  1. 例として、プレハブを作るのでAssetsの下にResourcesフォルダがなければ作る。
  2. 適当にプレハブをAssets/Resourcesの下につくる。(例:ButtonGroup)
  3. inspectorにaddressableのチェックがあるので、チェックを付ける
  4. チェックをつけると、addressableのpathが生成される(例:ButtonGroup)
  5. Resources_movedに勝手に移動される。もしくは、作られたファイルをResources以外のdirに入れる。
  6. 以下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(後述)が、サーバーから取得するようになってないか。

設定確認

  1. 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]

設定変更

設定変更したい場合は、

  1. Unityメインメニュー/Window/Addressable/Groups/ManageProfiles/Create/NewProfileを選択し、
  2. 各項目を入力していく

プレイモード選択

  1. Unityメインメニュー/Window/Addressable/Groups/PlayModeScriptを選択
  • Use Asset Database (fastest):Unity内のアセットから
  • Simulate Groups (Advanced):依存関係を分析して取得
  • Use Existing Build(requires built groups):パックプレイモードで、サーバーから取得

Addressableでビルドしたものを、Addressableを取得

  1. 上記のPlayModeScriptを"Use Existing Build"へ
  2. Addressableをビルドする(Unityメインメニュー/Window/Asset Management/Addressables/Groups/Build/New Build/Default Build Script
  3. プレビュー実行

ちなみにBuildファイルは以下とかdefaultlocalgroup_assets_all_69745f2bc65176429eb31f083306322b.bundleと買った形で出来る。

  • Library/com.unity.addressables/aa/WebGL/WebGL
  • ServerData/WebGL

Addressableの削除

  1. Unityメインメニュー/Window/Asset Management/Addressables/Groupsを選択
  2. 以下3種類削除操作がある
  • Build/CleanBuild/All → Library/BuildCacheが削除される
  • Build/CleanBuild/"Content Builders"
  • Build/CleanBuild/"Build Pipeline Cache"

Addressableの再生成

  1. Unityメインメニュー/Window/Asset Management/Addressables/Groups
  2. 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

ビルド時のパスを確認

  1. Assets/AddressableAssetsData/AssetGroups/Default Local Group
  2. BuildPathとLoadPathに何を設定してるか確認。
  • LocalBuildPath:Library/com.unity.addressables/aa/WebGL/WebGL
  • LocalLoadPath:{UnityEngine.AddressableAssets.Addressables.RuntimePath}/WebGL
  • RemoteBuildPath:ServerData/WebGL
  • RemoteLoadPath:ttp://localhost/WebGL

サーバーにAddressableファイルを読み込んで表示

  1. Assets/AddressableAssetsData/AssetGroups/Default Local Group
  2. BuildPathにRemoteBuildPathを設定し、
  3. LoadPathにRemoteLoadPathを設定
  4. Addressableをビルドし、(Unityメインメニュー/Window/Asset Management/Addressables/Groups/Build/New Build/Default Build Script
  5. ServerData/WebGLにできたファイルを自分のサーバー(例:ttp://localhost/WebGL/~)へ上げる。
  6. Unityメインメニュー/Window/Addressable/Groups/Profile/ManageProfilesのRemoteLoadPathをttp://localhost/[BuildTarget]から、自分のサーバー(例:ttp://localhost/WebGL/~)のファイルのある場所へ。
  7. プレイモード(Unityメインメニュー/Window/Addressable/Groups/PlayModeScript)をUse Existing Buildへ
  8. プレビュー表示すると表示される。

AddressablesのRemoteLoadPathの変更

  1. Window/Asset Management/Addressables/Groups
  2. Profile:WebGLを選択
  3. ManageProfiles
  4. RemoteLoadPathを変更する

https://qiita.com/tetr4lab/items/1b26755089820b041b4f

Addressableをscriptで実行

Unity/Editor/Addressableビルド [ショートカット]

参考

https://robamemo.hatenablog.com/entry/2021/01/08/195415

https://light11.hatenadiary.com/entry/2019/12/26/225232

https://light11.hatenadiary.com/entry/2020/07/29/202755