Unity développe des jeux WeChat et utilise Addressables pour gérer les ressources du jeu

Conseils

document

Vous pouvez généralement lire vous-même la documentation de l’adaptation des mini-jeux par Unity (bushi). Solution d'adaptation de mini-jeu WeChat

Télécharger le plug-in
 往下翻找到下载Unity插件,点击下载![在这里插入图片描述](https://img-blog.csdnimg.cn/ee5bbc32675c4c2cbcc1736ff7eb1ca9.png)
  1. Télécharger pour une utilisation ultérieureInsérer la description de l'image ici

Installer le package Addressables

  1. Commençons par les opérations de base et ajoutons plus de détails plus tard.
  2. Nouveau projet de mini-jeu Unity version 2020.3.46
Charger le package adressable
工具栏打开Window-Packages Manager
Packages 选择 Unity Registry找到Addressables
install安装
![在这里插入图片描述](https://img-blog.csdnimg.cn/14f2ad031b334de58fc42da556ebd1fd.png)
  1. Basculer le paramètre de construction sur WebGl
    Insérer la description de l'image ici

  2. Obtenez des ressources (xml, png, préfabriqué, scène, etc...)
    Insérer la description de l'image ici

Utiliser des adressables pour gérer les ressources

Cliquez sur Fenêtre - Gestion des actifs - Groupes pour ouvrir le panneau Groupe d'adresses
Insérer la description de l'image ici

Cliquez sur Créer pour créer de nouveaux paramètres d'adressables
Insérer la description de l'image ici
3. Après la création, le panneau Groupes adressables ajoutera le groupe Groupe local par défaut (par défaut). Les adressables sont regroupés par AssetBundle par groupe de groupe par défaut.Mettez les ressources dans un groupe Groupe, celles-ci seront ensuite placées dans le même groupe Groupe
Cliquez avec le bouton droit sur le panneau ou cliquez sur le bouton Créer dans le coin supérieur gauche pour créer un nouveau groupe
Insérer la description de l'image ici
Insérer la description de l'image ici

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

其中Default Local Group是默认的Group组设置文件,自己新建的分组(MyAssets)设置文件也在相同的位置
Ajouter des ressources
1. 直接拖

Insérer la description de l'image ici
2. Cliquez sur la ressource et cochez Adressable sous le panneau Inspecteur. L'adresse après Adressable est l'adresse de la ressource. Lors du chargement, vous pouvez rechercher directement des ressources en fonction de cette adresse.
Insérer la description de l'image ici
3. Paramètres du groupe.
Cliquez sur le fichier Groupe local par défaut dans le répertoire AddressableAssetsData pour ouvrir le panneau des paramètres du groupe local par défaut.
Insérer la description de l'image ici

	Build Path: 资源包创建的位置
	Load Path: 资源包加载的位置
	**LocalBuildPath**资源打包的位置在Library\com.unity.addressables\aa\WebGL下
	**RemoteBuildPath** 资源打包位置在ServerData\WebGL下
  1. Paramètres des étiquettes
    Cliquez sur la flèche rouge pour ouvrir les options d'étiquette, cliquez sur Gérer les étiquettes pour ouvrir les paramètres d'étiquette, créez vos propres étiquettes
    Insérer la description de l'image ici
    , puis subdivisez les étiquettes pour les ressources.
    Insérer la description de l'image ici

    1. Packer les ressources
      . Cliquez sur le fichier AddressableAssetSettings dans le répertoire AddressableAssetsData.
      Insérer la description de l'image ici
      Cliquez sur Gérer les groupes pour ouvrir l'interface de gestion des groupes. Cliquez sur Build-New Build-Default Build Script pour démarrer la création. La
      Insérer la description de l'image ici
      création est terminée.
      Insérer la description de l'image ici

Ressources de charges adressables

code
Charger des images en fonction de l'adresse

Insérer la description de l'image ici

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;
    }
运行结果

Insérer la description de l'image ici

Charger le préréglage
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);
    }

Insérer la description de l'image ici

Chargement groupé par balise

Insérer la description de l'image ici

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()}");
    }

Les résultats en cours d'exécution sont les suivants
Insérer la description de l'image ici

Charger la scène
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();
    }

résultat de l'opération
Insérer la description de l'image ici

Guerrier 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);

Décharger
resourcesAddressables.Release

  1. Décharger des ressources individuelles de la mémoire
  2. Poignée de déverrouillage
Préchargement de fichiers

Transfert vers le mini-jeu WeChat

Importer le plug-in initialement téléchargé

Une fois l'importation terminée, il y aura un bouton de mini-jeu WeChat dans la barre de menu. Cliquez sur Convertir le mini-jeu pour ouvrir le panneau d'outils.
Insérer la description de l'image ici

Modifier les paramètres du lecteur

Insérer la description de l'image ici
Espace colorimétrique Sélectionnez Gamma, sinon
l'API Auto Graphics ne peut pas être empaquetée. Décochez
l'API graphique pour conserver uniquement WebGL 1.0 ou WebGL 2.0, sinon le package sera trop volumineux.
Encodage Lightmap Sélectionnez Qualité normale, sinon les ressources seront volumineuses.

Paramètres du panneau d'outils

Insérer la description de l'image ici

Informations de base
  1. Pour le jeu APPID, rendez-vous au WeChat Mini Program Center pour en faire la demande. Ou obtenez un compte test dans les outils de développement WeChat
    Insérer la description de l'image ici
  2. CDN de ressource de jeu, l'adresse CDN où les ressources de jeu sont stockées. Vous n’êtes pas obligé de l’écrire et de le modifier plus tard dans le projet.
  3. Déversez le chemin, l'endroit où le mini-jeu WeChat est exporté
Démarrer le chargement des paramètres
  1. Démarrez l'image d'arrière-plan
    et vous pourrez modifier la couverture avec votre propre logo
    Insérer la description de l'image ici

  2. L'URL de la vidéo de la phase de chargement
    change la vidéo de la phase de chargement

  3. Méthode de chargement du premier package
    Modifier la méthode de chargement du premier package

  4. D'autres peuvent être testés par vous-même

Options de compilation de débogage

Vérifier les actifs de streaming clairs

Débogage WeChat
Ressource

Ouvrez le dossier converti, ouvrez le dossier webgl
StreamingAssets (dossier de ressources)
.webgl.data.unityweb.bin.txt (informations sur la ressource) et placez les trois fichiers
index.html
sur le CDN distant (les mini-jeux restants ne sont pas nécessaires)
Insérer la description de l'image ici

Modifier l'adresse CDN

Ouvrez le fichier game.js, recherchez "DATA_CDN" et modifiez l'adresse suivante.
Insérer la description de l'image ici

Ouvrez le projet avec les outils de développement WeChat

Insérer la description de l'image ici

d'autres problèmes
  1. Le chinois ne s'affiche pas.
    Remplacez toutes les polices par défaut de Unity par de nouvelles polices.
  2. Lors de l'ouverture de , une erreur de compilation se produit et le fichier game.json est introuvable.
    Cela se fait généralement en supprimant le fichier source, en réinitialisant l'APPID, puis en l'important. Ou
    recherchez le fichier project.config.json et ajoutez
    "miniprogramRoot " à la ligne au dessus de l'APPID : "minigame/",

Je suppose que tu aimes

Origine blog.csdn.net/the_vnas/article/details/132882266
conseillé
Classement