Unityに関連する記事です

 (作成中)

 基本的な設定方法や使い方については、色々なサイトや、ChatGPT に質問しても回答を得ることが出来ます。

 それ以外の気になっている部分をまとめる予定です。



Unity のバージョンアップによる影響


 2021.3 LTS → 2022.3 LTS へのバージョンアップにて検証しました。

 影響はありません。
Addressable の各設定も引き継いだ状態でバージョンアップが入りますので、そのままつながります。


Addressable Profiles の修正


 Unity 2022.3 LTS にて確認。

 Profiles にて Remote 先の Bundle Location 設定ですが、いままでは Custom に設定し、手動で URL を設定していましたが、
Cloud Content Delivery を利用している場合には、参照先を指定して設定することができるようになりました。

 新しく追加することも出来ます。





 Automatic でサイトに繋がり、同期させることが出来ます。





Build to CCD


 Addressables Group に Build to CCD ボタンがありますので、
こちらだと Build したファイルを自動的に Cloud Content Delivery にアップロードしてくれそうです。




参考サイト
Unity 公式マニュアル
Addressable Asset system with Cloud Content Delivery(クラウドコンテンツ配信を備えたアドレス指定可能な資産システム)


Build 成功時のログ







Addressables の管理フォルダ


 Addressable を Build して作成されたファイルは、プロジェクト内の ServerData フォルダ内に作成されます。








Addressables(アドレッサブル)


 同じシーンを読み込もうとすると Exception エラーになる



マテリアルとシェーダー


 プレファブをロードして生成したとき、マテリアルとシェーダーが正常にアサインされていてもピンクになるときがある。
その場合には、シェーダーのディレクトリ(アドレス)を指定して再度アサインすれば正常に表示される。


[SerializeField]
string shaderStr = "UI/Hidden/UI-Effect-Shiny";   // デバッグログで handle.Result.name で出た名前にする。シェーダー名のみでは見つからない

public async UniTask LoadPrefabsAsync() {

    // 依存関係の読み込み
    var dependencies = Addressables.DownloadDependenciesAsync(skillDetailReference);
    await dependencies.Task;

    if (dependencies.Status == AsyncOperationStatus.Succeeded) {
        Addressables.LoadAssetAsync<GameObject>(skillDetailReference).Completed += async (obj) => {
        skillDetail = obj.Result;
        skillDetailPrefab = skillDetail.GetComponent<SkillDetail>();

        // 依存関係と一緒に読み込まれているため、この部分は不要
        //var handle = Addressables.LoadAssetAsync<Shader>(uiEffectShaderReference);
        //await handle.Task;
        //Debug.Log(handle.Result.name);

        skillDetail.GetComponent<UnityEngine.UI.Image>().material.shader = handle.Result;  // こっちだけだと適用にならないので、下の処理をする

        Shader shader = Shader.Find(shaderStr);
        if (shader != null) {
            skillDetail.GetComponent<UnityEngine.UI.Image>().material.shader = shader;
        } else {
            Debug.Log(shaderStr + ": シェーダーが見つかりません。");
        }
    }
}

 また、ビルトインシェーダーの場合には、Project Settings 内の Graphics の Always Included Shaders の設定でシェーダーを追加して Save to Asset する。

【Unity】AssetBundle化したPrefabのシェーダー参照が壊れる現象
https://appleorbit.hatenablog.com/entry/2015/10/25...




上記の補足


 UI 上に表示させるためのパーティクルに設定している UI/Additive のシェーダーは、エディターだとピンクになるが、実機だとちゃんと表示される。
続けて2面にいったら剥げた

 ダウンロードしたアセットの情報は保持される
そのためロード時間も自動的に短縮される
現在 初回は音がなるまでに約10秒、ゲーム画面出るまでに20秒
次回以降は約5秒で音がなって、続けて約10秒でゲーム画面になる


 開放しているステージを再度獲得してしまう
2回目以降、パーティクルだけ剥がれる

 => Editor だけの問題


原因


 Android 環境での Shader の適用になるので、エディターで実行した際にピンクになるのは問題なし。
端末用の設定の Shader については、常に実機でテストすること。

  Shader を再設定する処理をコメントアウトしたが、実機では問題なかった
 ◆´,僚萢をしていた場合、実機では2回目以降に Main シーンへ遷移した際にシェーダーが外れてパーティクルのみピンクになる症状がみられたが、
   ,僚萢をしなければ、2回目以降でも問題なくパーティクルにも Shader が適用された

 以上のことから、Addressables において Android 環境で開発する場合、エディターでのデバッグは不要。
無理にピンクを修正する必要もない。


AssetReference.ToString () と AssetGUID 変数について


 AssetReference.ToString () と AssetGUID 変数は、GUIDの情報が取れる。そのため、アサインしているファイルの名前ではない

https://docs.unity3d.com/Packages/com.unity.addres...




コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます