Unity は WeChat ゲームを開発し、Addressables を使用してゲーム リソースを管理します

チップ

書類

Unity のミニゲームの適応に関するドキュメントは、通常、自分で読むことができます (ブシ)。WeChat ミニゲーム適応ソリューション

プラグインをダウンロード
 往下翻找到下载Unity插件,点击下载![在这里插入图片描述](https://img-blog.csdnimg.cn/ee5bbc32675c4c2cbcc1736ff7eb1ca9.png)
  1. 後で使用するためにダウンロードするここに画像の説明を挿入します

Addressables パッケージをインストールする

  1. 最初に基本的な操作を実行し、後で詳細を追加しましょう。
  2. 新しいミニゲームプロジェクトUnity バージョン 2020.3.46
アドレス指定可能なパッケージをロードする
工具栏打开Window-Packages Manager
Packages 选择 Unity Registry找到Addressables
install安装
![在这里插入图片描述](https://img-blog.csdnimg.cn/14f2ad031b334de58fc42da556ebd1fd.png)
  1. ビルド設定を WebGl に切り替える
    ここに画像の説明を挿入します

  2. いくつかのリソース (xml、png、プレハブ、シーンなど) を取得します。
    ここに画像の説明を挿入します

Addressables を使用してリソースを処理する

[ウィンドウ] - [資産管理] - [グループ] をクリックして、[アドレス指定可能なグループ] パネルを開きます。
ここに画像の説明を挿入します

「作成」をクリックして、新しい Addressables 設定を作成します。
ここに画像の説明を挿入します
3. 作成後、「Addressable Groups」パネルに「Default Local Group (Default)」グループが追加されます。Addressables は、デフォルトでグループ グループごとに AssetBundle によってパッケージ化されます。リソースを Group グループに配置すると、これらは同じ Group グループに配置されます。
パネルを右クリックするか、左上隅の「作成」ボタンをクリックして新しいグループを作成します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

**Assets目录下会新增AddressableAssetsData文件夹**
![在这里插入图片描述](https://img-blog.csdnimg.cn/85e9b3d38e4e44968e517ceeb2e7122a.png)

其中Default Local Group是默认的Group组设置文件,自己新建的分组(MyAssets)设置文件也在相同的位置
リソースの追加
1. 直接拖

ここに画像の説明を挿入します
2. リソースをクリックし、「インスペクター」パネルで「Addressable」にチェックを入れます。「Addressable」の後のアドレスがリソースのアドレスです。ロード時に、このアドレスに基づいてリソースを直接検索できます。
ここに画像の説明を挿入します
3. グループ設定:
AddressableAssetsData ディレクトリ内のデフォルト ローカル グループ ファイルをクリックして、デフォルト ローカル グループ設定パネルを開きます。
ここに画像の説明を挿入します

	Build Path: 资源包创建的位置
	Load Path: 资源包加载的位置
	**LocalBuildPath**资源打包的位置在Library\com.unity.addressables\aa\WebGL下
	**RemoteBuildPath** 资源打包位置在ServerData\WebGL下
  1. ラベル設定
    赤い矢印の位置をクリックしてラベル オプションを開き、[ラベルの管理] をクリックしてラベル設定を開き、独自のラベルを作成して
    ここに画像の説明を挿入します
    、リソースのラベルを細分化します。
    ここに画像の説明を挿入します

    1. リソースをパックします
      。AddressableAssetsData ディレクトリの AddressableAssetSettings ファイルをクリックします。[
      ここに画像の説明を挿入します
      グループの管理] をクリックしてグループ管理インターフェイスを開きます。[ビルド]、[新規ビルド]、[デフォルトのビルド スクリプト] の順にクリックして作成を開始します。作成が
      ここに画像の説明を挿入します
      完了しました。
      ここに画像の説明を挿入します

アドレス指定可能な負荷リソース

コード
アドレスに基づいて画像をロードする

ここに画像の説明を挿入します

static AsyncOperationHandle<Sprite> spHandle;
    // 地址
    string keys = "Assets/Resouces/cpy.png";

    // Start is called before the first frame update
    void Start()
    {
    
    
        StartCoroutine(loadSprite(keys));
    }

    IEnumerator loadSprite(string kety)
    {
    
    
        spHandle = Addressables.LoadAssetAsync<Sprite>(kety);

        while (!spHandle.IsDone)
        {
    
    
            Debug.Log($"加载中{
      
      spHandle.PercentComplete.ToString()}");
            yield return null;
        }

        onSPLoaded(spHandle.Result);
    }

    void onSPLoaded(Sprite sp)
    {
    
    
        transform.GetComponent<Image>().sprite = sp;
    }
运行结果

ここに画像の説明を挿入します

プリセットをロードする
static AsyncOperationHandle<GameObject> goHandle;
    // 地址
    string keys = "Assets/Prefabs/Cube.prefab";

    // Start is called before the first frame update
    void Start()
    {
    
    
        StartCoroutine(loadSprite(keys));
    }

    IEnumerator loadSprite(string kety)
    {
    
    
        goHandle = Addressables.LoadAssetAsync<GameObject>(kety);

        while (!goHandle.IsDone)
        {
    
    
            Debug.Log($"加载中{
      
      goHandle.PercentComplete.ToString()}");
            yield return null;
        }

        onOBLoaded(goHandle.Result);
    }

    void onOBLoaded(GameObject sp)
    {
    
    
        GameObject ob = Instantiate(sp);
    }

ここに画像の説明を挿入します

タグによる一括ロード

ここに画像の説明を挿入します

static AsyncOperationHandle<IList<Sprite>> spHandle;

    static string iconLabels = "icon";

    // Start is called before the first frame update
    void Start()
    {
    
    
        StartCoroutine(loadAllSprite(iconLabels));
    }

    IEnumerator loadAllSprite(string key)
    {
    
    
        spHandle = Addressables.LoadAssetsAsync<Sprite>(key, onSpLoaded);

        yield return null;
    }

    void onSpLoaded(Sprite sp)
    {
    
    
        Debug.Log($"icon name : {
      
      sp.name.ToString()}");
    }

実行結果は以下の通りです
ここに画像の説明を挿入します

シーンをロードする
static AsyncOperationHandle<SceneInstance> sceneHandle;

    static string sceneKey = "Assets/Scenes/TestScene.unity";

    SceneInstance scene;

    // Start is called before the first frame update
    void Start()
    {
    
    
        StartCoroutine(loadScene(sceneKey));
    }

    IEnumerator loadScene(string key)
    {
    
    
    	// 保留原场景,不保留Addressables.LoadSceneAsync(key, LoadSceneMode.Single, activateOnLoad: true)
    	// 加载模式LoadSceneMode 激活activateOnLoad
        sceneHandle = Addressables.LoadSceneAsync(key, LoadSceneMode.Additive, activateOnLoad: false);
		
        while (!sceneHandle.IsDone)
        {
    
    
            Debug.Log($"load pcs : {
      
      sceneHandle.PercentComplete.ToString()}");
            yield return null;
        }

        scene = sceneHandle.Result;
        onSceneLoaded();
    }

    void onSceneLoaded()
    {
    
    
        scene.ActivateAsync();
    }

演算結果
ここに画像の説明を挿入します

API戦士
LoadAssetsAsync的三个重载:
	// 用于加载单个标签或地址
	static AsyncOperationHandle<IList<T>> LoadAssetsAsync<T>(object key, Action<T> callback);
	// 用于加载地址+标签, MergeMode 为找到的资源合并模式
	static AsyncOperationHandle<IList<T>> LoadAssetsAsync<T>(IList<object> keys, Action<T> callback, MergeMode mode);
	static AsyncOperationHandle<IList<T>> LoadAssetsAsync<T>(IList<IResourceLocation> locations, Action<T> callback);

リソースをアンロードAddressables.Release

  1. 個々のリソースをメモリからアンロードする
  2. リリースハンドル
ファイルのプリロード

WeChat ミニゲームに転送

最初にダウンロードしたプラグインをインポートする

インポートが完了すると、メニューバーに「WeChat ミニゲーム」ボタンが表示されるので、「ミニゲームの変換」をクリックしてツールパネルを開きます。
ここに画像の説明を挿入します

プレーヤー設定の変更

ここに画像の説明を挿入します
カラー スペース ガンマを選択します。そうしないと、
自動グラフィックス API をパッケージ化できません。
グラフィックス API のチェックを外して、WebGL 1.0 または WebGL 2.0 のみを保持します。そうしないと、パッケージが大きすぎます。
ライトマップ エンコーディング [標準品質] を選択します。そうでない場合、リソースが大きくなります。

ツールパネルの設定

ここに画像の説明を挿入します

基本情報
  1. ゲームの APPID については、WeChat ミニ プログラム センターにアクセスして申請してください。または、WeChat 開発者ツールでテスト アカウントを取得します
    ここに画像の説明を挿入します
  2. ゲーム リソース CDN、ゲーム リソースが保存されている CDN アドレス。書き留めてプロジェクトの後半で変更する必要はありません。
  3. パス、つまり WeChat ミニゲームがエクスポートされる場所を入力します。
設定の読み込みを開始
  1. 背景画像を開始する
    と、カバーを独自のロゴに変更できます
    ここに画像の説明を挿入します

  2. ロード フェーズ ビデオの URL が
    変更されました ロード フェーズ ビデオ

  3. 最初のパッケージのロード方法
    最初のパッケージのロード方法を変更する

  4. その他は自分でテストできます

デバッグコンパイルオプション

ストリーミング アセットのクリアを確認する

WeChatのデバッグ
リソース

変換されたフォルダーを開き、webgl フォルダー
StreamingAssets (リソース フォルダー)
.webgl.data.unityweb.bin.txt (リソース情報)を開き、3 つの
index.html
ファイルをリモート CDN に配置します (残りのミニゲームは必要ありません)。
ここに画像の説明を挿入します

CDNアドレスを変更する

game.js ファイルを開き、「DATA_CDN」を見つけて次のアドレスを変更します。
ここに画像の説明を挿入します

WeChat開発者ツールでプロジェクトを開きます

ここに画像の説明を挿入します

その他の問題
  1. 中国語が表示されない
    Unity のデフォルト フォントをすべて新しいフォントに変更します。
  2. を開くと、コンパイル エラーが発生し、game.json ファイルが見つかりません。
    通常、これを行うには、ソース ファイルを削除し、APPID をリセットして、インポートします。または、
    project.config.json ファイルを見つけて、
    「miniprogramRoot」を追加します。 APPID の上の行に「minigame/」を追加します。

おすすめ

転載: blog.csdn.net/the_vnas/article/details/132882266