チップ
書類
Unity のミニゲームの適応に関するドキュメントは、通常、自分で読むことができます (ブシ)。WeChat ミニゲーム適応ソリューション
プラグインをダウンロード
往下翻找到下载Unity插件,点击下载![在这里插入图片描述](https://img-blog.csdnimg.cn/ee5bbc32675c4c2cbcc1736ff7eb1ca9.png)
- 後で使用するためにダウンロードする
Addressables パッケージをインストールする
- 最初に基本的な操作を実行し、後で詳細を追加しましょう。
- 新しいミニゲームプロジェクトUnity バージョン 2020.3.46
アドレス指定可能なパッケージをロードする
工具栏打开Window-Packages Manager
Packages 选择 Unity Registry找到Addressables
install安装
![在这里插入图片描述](https://img-blog.csdnimg.cn/14f2ad031b334de58fc42da556ebd1fd.png)
-
ビルド設定を WebGl に切り替える
-
いくつかのリソース (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下
-
ラベル設定
赤い矢印の位置をクリックしてラベル オプションを開き、[ラベルの管理] をクリックしてラベル設定を開き、独自のラベルを作成して
、リソースのラベルを細分化します。
- リソースをパックします
。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
- 個々のリソースをメモリからアンロードする
- リリースハンドル
ファイルのプリロード
WeChat ミニゲームに転送
最初にダウンロードしたプラグインをインポートする
インポートが完了すると、メニューバーに「WeChat ミニゲーム」ボタンが表示されるので、「ミニゲームの変換」をクリックしてツールパネルを開きます。
プレーヤー設定の変更
カラー スペース ガンマを選択します。そうしないと、
自動グラフィックス API をパッケージ化できません。
グラフィックス API のチェックを外して、WebGL 1.0 または WebGL 2.0 のみを保持します。そうしないと、パッケージが大きすぎます。
ライトマップ エンコーディング [標準品質] を選択します。そうでない場合、リソースが大きくなります。
ツールパネルの設定
基本情報
- ゲームの APPID については、WeChat ミニ プログラム センターにアクセスして申請してください。または、WeChat 開発者ツールでテスト アカウントを取得します
- ゲーム リソース CDN、ゲーム リソースが保存されている CDN アドレス。書き留めてプロジェクトの後半で変更する必要はありません。
- パス、つまり WeChat ミニゲームがエクスポートされる場所を入力します。
設定の読み込みを開始
-
背景画像を開始する
と、カバーを独自のロゴに変更できます
-
ロード フェーズ ビデオの URL が
変更されました ロード フェーズ ビデオ -
最初のパッケージのロード方法
最初のパッケージのロード方法を変更する -
その他は自分でテストできます
デバッグコンパイルオプション
ストリーミング アセットのクリアを確認する
WeChatのデバッグ
リソース
変換されたフォルダーを開き、webgl フォルダー
StreamingAssets (リソース フォルダー)
.webgl.data.unityweb.bin.txt (リソース情報)を開き、3 つの
index.html
ファイルをリモート CDN に配置します (残りのミニゲームは必要ありません)。
CDNアドレスを変更する
game.js ファイルを開き、「DATA_CDN」を見つけて次のアドレスを変更します。
WeChat開発者ツールでプロジェクトを開きます
その他の問題
- 中国語が表示されない
Unity のデフォルト フォントをすべて新しいフォントに変更します。 - を開くと、コンパイル エラーが発生し、game.json ファイルが見つかりません。
通常、これを行うには、ソース ファイルを削除し、APPID をリセットして、インポートします。または、
project.config.json ファイルを見つけて、
「miniprogramRoot」を追加します。 APPID の上の行に「minigame/」を追加します。