
Auteur:YMC_MHZDernière mise à jour :06/08/2025 08:42:5310.4M2.1MB
Tous les modèles ont été créés par Calypso, le chat de Yuri, exclusivement pour ce mod: 3
Tous les modèles sont réalisés parCalypso, le chat de YuriFait pour ce mod: 3

Un mod de décoration simple et amusant qui offre un Pour les joueurs d'importer des modèles personnalisés.
Pour le moment, seules quelques décorations sont disponibles, mais d'autres mises à jour sont prévues.
Menu de Nick Mau Le mod est une condition préalable.
Si vous rencontrez des problèmes de perte de force, téléchargez Intensité de fixation Modèle.
Modules de décoration simples et amusants, fournissant unitypackage, pour que les joueurs importent des modèles personnalisés.
Il n'y a que quelques décorations pour le moment, mais elles continueront à être mises à jour à l'avenir.
Nécessité d'installer Menu de Nick Mau Module frontal.
Si vous rencontrez des problèmes de perte de puissance, téléchargez Intensité de fixation Module.
* La gueule de poulet dans la capture d'écran vient de EvenMoreHead.
).ESC, peut être trouvé dans le coin inférieur gauche Bouton "MoreHead"。


Avec Mise à jour à 2.1.3, Morehead Doit être mis à jour pour 1.3.0 Ou bien plus tard pour fonctionner correctement.
⚠ Royaumes Si vous utilisez toujours
Morehead 1.2.8Ou plus tôt, s'il vous plaît garderMenoulibEn2.1.1Ou plus tôt pour éviter les problèmes de compatibilité.
Pour une meilleure expérience et stabilité, nous vous recommandons d'utiliser toujours la dernière version.
Mise à jour à 2.1.3, donc Morehead Nécessité de mettre à niveau vers 1.3.0 Ou version ultérieure pour fonctionner correctement.
⚠ Royaumes Si vous utilisez toujours
Morehead 1.2.8Ou une version antérieure, assurez-vousMenoulibToujours pour2.1.1Ou une version antérieure, sinon des problèmes de compatibilité peuvent survenir.
Pour garantir la meilleure expérience et stabilité, il est recommandé d'utiliser toujours la dernière version.
→ 1.2.8+
1.0.3 → 1.1.8+ Obligatoire.
Menoulib 2.0.0 → Besoin Morehead 1.2.8+
Menoulib 1.0.3 → Besoin Morehead 1.1.8+ Edition.
MoreHead fournit plusieurs options de configuration qui peuvent être modifiées dans le fichier de configuration BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):
| Options | ||
|---|---|---|
| EscButtonPosX | Position du bouton X Morehead dans le menu ESC | 0 |
| EscButtonPosY | Y Position du bouton Morehead dans le menu ESC | 0 |
| Bouton de lobby POSX | Position du bouton X Morehead dans le lobby | 0 |
| Bouton du lobby | Y Position du bouton Morehead dans le hall | 0 |
L'ajustement de ces valeurs vous permet de repositionner les boutons MoreHead lorsqu'ils entrent en conflit avec d'autres éléments de l'interface utilisateur du mod.
| Options | Description | Valeur par défaut |
|---|---|---|
| Mode liste noire | Définissez sur "ENABLE_BLACKLIST" pour activer la fonction de liste noire | "" (désactivé) |
Lorsque le mode liste noire est activé:
Tenez enfoncée la touche Maj et cliquez Ajouter/supprimer des éléments de la liste noire sur les boutons de décorationMaj + Tout effacer Effacer toute la liste noire en une seule foisLes décorations inscrites sur la liste noire n’apparaissent pas dans votre menu de décorations, ce qui est utile pour cacher les objets que vous ne voulez pas utiliser.
💡 Suggérer un joueur pour gérer la liste noire, et par le mod code ou
BepInEx/config/MoreHeadBlacklist.jsonFichier pour assurer la synchronisation de l'apparence dans les jeux multijoueurs.
💡 Avant de partager, assurez-vous de désactiver le mode de liste noire (effacer les valeurs de configuration) pour éviter que d'autres joueurs ne les modifient accidentellement.
| Options | Valeur par défaut | |
|---|---|---|
| EnableVerboseLogging | Activer la journalisation détaillée pour le chargement du modèle | Faux |
Activez cette option pour afficher des journaux plus détaillés sur le processus de chargement du modèle, ce qui peut être utile pour le dépannage.
| Documents | Le chemin | Description |
|---|---|---|
| MoreHeadConfig.json | |
Le profil principal pour stocker l'état de la décoration |
| MoreHeadOutfits.json | [Unity.persistentDataPath]/REPOModData/MoreHead/ |
Jusqu'à 5 configurations d'équipement peuvent être stockées |
| Mhz.REPOMoreHead.cfg | |
Profil BepInEx avec positionnement de l'interface utilisateur et d'autres paramètres |
| MoreHeadBlacklist.json | BepInEx/config/ |
Liste noire de fichiers pour cacher les décorations indésirables |
| Décoration (fichier. hhh) | BepInEx/Plug-in/ orBepInEx/Plug-in/Morehead/Décoration/ |
Modèle de décoration personnalisé |
Remarques: [Unity.persistentDataPath] Habituellement analysé comme:
C: /Users/[Votre Nom]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/bibliothèque/support application/semiwork/répo/MoreHead fournit plusieurs options de configuration qui peuvent être modifiées dans le fichier de configuration BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):
| Options | Description | Valeur par défaut |
|---|---|---|
| EscButtonPosX | Coordonnées X du bouton MoreHead dans le menu ESC | 0 |
| EscButtonPosY | Coordonnées Y du bouton MoreHead dans le menu ESC | 0 |
| Bouton de lobby POSX | Coordonnées X du bouton MoreHead dans le lobby | 0 |
| Bouton du lobby | Coordonnées Y du bouton MoreHead dans le lobby | 0 |
L'ajustement de ces valeurs peut repositionner le bouton MoreHead et éviter les conflits avec les éléments de l'interface utilisateur d'autres modules.
| Options | Description | Valeur par défaut |
|---|---|---|
| Mode liste noire | Définissez "ENABLE_BLACKLIST" pour activer la fonction de liste noire | "" (désactivé) |
Après avoir activé le mode de liste noire:
Déplacement + Cliquez Bouton cosmétique pour ajouter/supprimer des éléments de la liste noireMaj + Tout effacer Toutes les entrées de la liste noire peuvent être effacées en même tempsLes produits cosmétiques inscrits sur la liste noire ne figurent pas dans votre menu de décoration, ce qui est utile pour cacher des objets que vous ne voulez pas utiliser.
💡 Il est recommandé que la liste noire soit maintenue par un joueur, en partageant le code du mod ou en envoyant directement
BepInEx/config/MoreHeadBlacklist.jsonFichier pour garantir la synchronisation de l'apparence lors des jeux multijoueurs.
💡 Assurez-vous de désactiver le mode liste noire (vider la chaîne de l'élément de configuration) avant de partager pour éviter que d'autres joueurs les touchent accidentellement et provoquent une désynchronisation des données.
| Options | Description | Valeur par défaut |
|---|---|---|
| EnableVerboseLogging | Activer la journalisation détaillée du chargement du modèle | Faux |
Activez cette option pour afficher des journaux plus détaillés du processus de chargement du modèle, ce qui peut être utile pour le dépannage.
| Documents | Le chemin | Description |
|---|---|---|
| MoreHeadConfig.json | |
Le profil principal, qui stocke l'état de la décoration |
| MoreHeadOutfits.json | [Unity.persistentDataPath]/REPOModData/MoreHead/ |
Stockage jusqu'à 5 configurations d'équipement |
| Mhz.REPOMoreHead.cfg | |
Profil BepInEx avec positionnement de l'interface utilisateur et d'autres paramètres |
| MoreHeadBlacklist.json | BepInEx/config/ |
Fichier de liste noire pour cacher les décorations indésirables |
| Fichier de décoration (fichier. hhh) | BepInEx/Plug-in/ 或BepInEx/Plug-in/Morehead/Décoration/ |
Modèle de décoration personnalisé |
Attention: [Unity.persistentDataPath] Correspond généralement à:
C:/Users/[Votre nom d'utilisateur]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/bibliothèque/support application/semiwork/répo/Configurer Unity (2022.3* Recommandé, le jeu utilise le pipeline de rendu intégré, veuillez prêter attention au matériau du modèle correspondant), importer PlusHead-Asset-Pack_v1.3.unitypackage.
Importez votre modèle Et Glisser Avatar du joueur Préfabriqué dans la scène.
Assurez-vous que votre modèle est compatible avec Unity et qu'il est correctement assemblé s'il y a une animation.
Les pièces suivantes sont trouvées En Avatar du joueur, l’endroit où le modèle sera placé:
| Name | Description | étiquettes |
|---|---|---|
| Décoration de la tête (ne pas bouger) | La tête levée quand elle parle | Tête |
| Décoration du cou (ne pas bouger) | Région mentone/thoracique | Cou |
| Décoration du corps (ne pas bouger) | Corps | Corps |
| Décoration des hanches (ne pas bouger) | Zone des hanches/inférieure du corps | Hanches |
| Décoration de bras en L (ne pas bouger) | Bras gauche | Bras gauche |
| Décoration du bras R (ne pas bouger) | Bras droit | Bras droit |
| Décoration de la jambe L (ne pas bouger) | Jambe gauche | Jambe gauche |
| Décoration de la jambe R (ne pas bouger) | Jambe droite | Jambe droite |
| Décoration du monde (ne bouge pas) | Suivez la position du caractère, mais restez horizontal | |
⚠ Royaumes Ces positions sont des références de points d'ancrage. Ne modifiez pas les coordonnées, sinon votre modèle sera mal aligné pendant le jeu.
💡 The RoyalMondialeLes marqueurs sont utiles pour les décorations qui doivent garder une orientation horizontale indépendamment du mouvement du personnage.
💡 Les onglets associés aux membres (bras gauche, bras droit, jambe gauche, jambe droite) peuvent être affichés ensemble dans le jeu sous l’onglet principal « membres ».
Créez un objet vide sous la pièce cible (A en abrégé) et nommez-lui.
Ce nom sera affiché dans le jeu comme le nom de votre décoration.
Placez le modèle dans A et ajustez-le à la bonne position.
Faites glisser A vers Projets Fenêtre pour créer des préréglages.
⚠ Royaumes Remarque: Veuillez éviter d'ajouter des composants collisionnaires au modèle de décoration, car ils peuvent affecter la physique du personnage, causer des problèmes de rotation ou des mouvements instables. Pour les interactions collisionnelles, des techniques alternatives sont envisagées.
Running Outils → Générateur de décoration de tête, faites glisser votre A prefab (ou plus, prend en charge l'exportation par lots) dans le panneau Script, sélectionnez la section correspondante à l'étape 3, puis Cliquez Ajouter un modèle à la liste.
Assurez-vous de choisir la bonne partie du corps (tête/cou/corps/hanches, etc.) pour correspondre à l'endroit où vous avez placé vos ornements.
Cliquez Construire tous les AssetBundles, puis trouve 【Nom de votre décoration】.hhh Documents dans Regroupement d'actifs Dossier.
Seulement
. hhhDes fichiers sont nécessaires pour l'installation. Les autres fichiers générés peuvent être ignorés.
Mouvement Fichier à BepInEx\Plug-in (Le jeu charge tous les fichiers. hhh dans le dossier plugins. Si vous n'êtes pas sûr où les placer, vous pouvez le mettre dans \MoreHead\Décorations Pour une meilleure organisation).
⚠ Royaumes Pour la visibilité multijoueur: vous et vos amis devez avoir le même
Installez le fichier pour voir la bonne décoration.
⚠ Royaumes Ne pas emballerMoreHead.dllFichier dans votre Mod, seulement. hhhLes fichiers et ce module sont nécessaires pour profiter de la décoration.
Commencez à jouer et profitez!
Appuyez sur ESC pendant le jeu et trouvez "MoreHead" dans le coin inférieur gauche pour accéder à votre nouvelle décoration.
Déployer Unity(Version 2022.3* recommandée, le jeu utilise un pipeline de rendu intégré, veuillez prêter attention au matériau du modèle correspondant), importer PlusHead-Asset-Pack_v1.3.unitypackage。
Importer le modèle et mettre Préfabriqué glisser dans la scène。
Assurez-vous que votre modèle est compatible avec Unity, s'il y a des animations qui nécessitent une bonne liaison des os.
Trouver Avatar du joueur Les parties suivantes du modèle correspondent à l'emplacement où le modèle sera placé:
| Nom | Description | étiquettes |
|---|---|---|
| Décoration de la tête (ne pas bouger) | Tête levée lorsque vous parlez | Tête |
| Décoration du cou (ne pas bouger) | Menton/poitrine | Cou |
| Décoration du corps (ne pas bouger) | Corps | Corps |
| Décoration des hanches (ne pas bouger) | Hanches/bas du corps | Hanches |
| Décoration de bras en L (ne pas bouger) | Bras gauche | Bras gauche |
| Décoration du bras R (ne pas bouger) | Bras droit | Bras droit |
| Décoration de la jambe L (ne pas bouger) | Jambe gauche | Jambe gauche |
| Décoration de la jambe R (ne pas bouger) | Jambe droite | Jambe droite |
| Décoration du monde (ne bouge pas) | Suivez la position du personnage mais restez horizontal | |
⚠ Royaumes Ces positions sont des références de points d'ancrage de coordonnées. Ne modifiez pas les coordonnées, sinon votre modèle sera mal aligné dans le jeu.
💡MondialeLes étiquettes sont adaptées aux décorations qui doivent être orientées horizontalement, quel que soit le mouvement du personnage.
💡 Les balises liées aux membres (leftarm, rightarm, leftleg, rightleg) peuvent être visualisées uniformément dans le jeu via l'onglet principal « LIMBS ».
Créez un objet vide (appelé A) sous la partie cible et nommez-le。
Ce nom apparaîtra comme le nom de votre décoration dans le jeu.
Placez le modèle dans A et ajustez-le à la bonne position。
Faites glisser A versProjetsFenêtre, créer des préformes。
⚠ Royaumes Astuce: N'ajoutez pas de composants de corps de collision au modèle décoratif. Les collisions peuvent affecter le comportement physique du personnage, entraînant une rotation anormale ou un mouvement instable. Pour une interaction de collision, veuillez envisager d'utiliser d'autres implémentations techniques.
RunningOutils → Générateur de décoration de tête, faites glisser une préforme A (ou plus, l'exportation par lots est prise en charge), sélectionnez la partie correspondante à l'étape 3, puisAjouter un modèle à la liste。
Assurez-vous de choisir la bonne partie du corps (tête/cou/corps/hanches, etc.) qui correspond à l'endroit où vous avez placé la décoration.
CliquezConstruire tous les AssetBundles, puis dansRegroupement d'actifsTrouvé dans le dossier[Nom de votre ornement].hhhDes documents.
Il faut seulement lors de l'installation
Fichiers, les autres fichiers générés peuvent être ignorés.
将Déplacement du fichier versBepInEx\Plug-in(Le démarrage du jeu chargera tous les fichiers. hhh sous les plugins. Si vous ne savez pas où les mettre, vous pouvez les mettre\MoreHead\DécorationsFacile à gérer).
⚠ Royaumes Visibilité multijoueur: vous et vos amis devez installer le même
. hhhDocuments pour se voir mutuellement la bonne décoration.
⚠ Royaumes Ne faites pas l'emballageMoreHead.dllFichier dans votre Mod, il suffit de. hhhVous pouvez utiliser les fichiers et ce mod pour jouer avec des accessoires.
Lancez le jeu et profitez de la décoration!
Appuyez sur ESC dans le jeu et trouvez "MoreHead" dans le coin inférieur gauche pour accéder à votre nouvelle décoration.
Depuis la version 1.2.4, MoreHead fournit une API publique pour les extensions. Ces interfaces permettent aux développeurs de charger des ressources AssetBundle par programmation, d'injecter des scripts personnalisés et d'améliorer les fonctionnalités de décoration.
Les interfaces publiques suivantes sont disponibles sur Gestionnaire de coiffure Catégorie:
| Méthodologie | Description |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assemblée) |
Tout charger . hhh Spécifiez les ressources intégrées dans l'assemblage |
Recréer () |
Actualisez l'interface utilisateur pour afficher les décorations nouvellement chargées |
GetDecorationsFromAssembly(Assemblée assemblée) |
Renvoie la liste de toutes les décorations chargées à partir de l'assemblage spécifié |
GetDecorationGameObjectsFromAssembly(Assemblée assemblée) |
Renvoie la liste des préréglages GameObject chargés à partir de l'assemblage spécifié |
GetDecorationByName (assemblage assemblage, chaîne décorationName) |
Trouver une décoration spécifique par nom à partir de l'assemblage spécifié |
FindDecorationsByPartialName (assemblage assembly, chaîne partialName) |
Rechercher des décorations qui contiennent le nom de la section spécifiée |
Il existe deux façons principales d’exploiter l’API de MoreHead pour étendre la fonctionnalité:
Vous pouvez intégrer un AssetBundle () fichier directement dans votre DLL en tant que ressource intégrée:
Documents dans le projet//Chargez toutes les ressources. hhh intégrées de votre assemblage Assembly assembly.getExecutingAssembly (); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assemblage); MoreHead.HeadDecorationManager.RecreateUI ();
Remarques: L'intégration d'une ressource dans une DLL n'est pas obligatoire. Vous pouvez également utiliser la méthode standard de MoreHead pour charger le local
. hhhFichiers et utilisez simplement votre DLL pour l'injection de scripts et l'implémentation de fonctionnalités.
Vous pouvez écrire des scripts pour accéder et modifier les décorations, qu'elles soient chargées à partir d'une DLL ou d'une autre source:
Utiliser BepInEx Utilisation de BepInEx.Logging Utilisation du système. Réflexion; Utilisation de UnityEngine Utilisation de System.Collections.Generic Espace de noms MyCustomDecorations {[BepInPlugin("com.yourname.customdecorations "," Custom Decorations Mod "," 1.0.0 ")] [BepInDependency (" Mhz.REPOMoreHead ", BepInDependency.DependencyFlags.HardDependency)] Classe publique CustomDecorationsPlugin: BaseUnityPlugin{ public static CustomDecorationsPlugin instance {get; private set;} Private ManualLogSource_Logger; private const string TARGET_MODEL_NAME="Cigar"; private const string ("Private Model); _logger.LogInfo("Décoration personnalisée Mod loaded "); //charger la décoration et définir le gestionnaire LoadDecorations (); } private void LoadDecorations () {try {//Obtenir l'assemblage actuel Assembly Assembly.getExecutingAssembly ();//Charger toutes les ressources. hhh à partir de la DLL actuelle MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(Assembly);//Recreer l'interface utilisateur pour afficher le modèle nouvellement chargé MoreHead.HeadDecorationManager.RecreateUI ();//Rechercher un modèle spécifique qui correspond à la liste des noms cibles<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly, TARGET_MODEL_NAME); if(targetDecorations.Count>0) {_logger.LogInfo($"found {targetDecorations.Count} models match '{TARGET_MODEL_NAME}' ");//Ajouter un composant à chaque modèle cible trouvé foreach (var decoration dans targetDecorations){ if(decoration.Prefab!=null&&decoration.Prefab.GetComponent<SpaceKeyHandler>() ==null) {_logger.LogInfo($"Ajouter SpaceKeyHandler à {decoration.DisplayName}");decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}} catch(System.Exception ex) {_logger.LogError($"Error processing decorations: {ex.Message}");}}//Classes utilisées pour gérer le comportement de la décoration Class public SpaceKeyHandler: MonoBehaviour {// Enregistrer Instance._logger.LogInfo($"SpaceKeyHandler initialized on {gameObject.name}");} private void Update (); if (Input.GetKeyDown(KeyCode.Space)); if ($"SpaceKeyHandler: {"Spacebar lors de la décoration: {"Spacebar lors de la décoration: {gameObject.name}");if ($"Spacebar lors de la décoration: {//spacebar lors de la décoration: {//spacebar lors de la décoration: {//spacebar lors de la décoration)
⚠️ Important Notes
Les scripts ne doivent pas nécessairement être attachés au modèle correspondant-implémentez-les selon les besoins pour obtenir la bonne fonctionnalité. Par exemple, l'exemple de code ci-dessus ne répond qu'à l'appui de la barre d'espace lorsque des caractères sont affichés dans le menu.
Pourquoi cela se produit-il?
Parce que du point de vue à la première personne, le jeu définit les personnages locaux
[Plate-forme]Objets de jeu Inactivité (SetActive (faux)).
Est l'objet parent qui contient le modèle de rôle, et La décoration Morehead est également installée sous cette hiérarchie.- Quand
Selon le mécanisme d'Unity, Tous les composants de l'objet enfant Il n'y aura pas d'euxMise à jour,Mise à jour de correctionEt autres approches du cycle de vie Appelé.- Des modèles décoratifs personnalisés sont également placés dans
[Plate-forme]Hiérarchique, donc lorsque vous attachez des scripts directement au modèle, une fois dans la vue à la première personne, ces scripts Impossible d'exécuter correctement Parce que l'objet parent est désactivé.- Cependant, dans le jeu Interface de menu, le modèle de rôle reste toujours Actif, donc les scripts attachés à la décoration fonctionnent correctement, car Unity n'exécute les méthodes de composants que sur les GameObjects actifs.
Cette Différence d'état d'activation C'est un point clé qui explique pourquoi le même script se comporte différemment dans différents scénarios.
Remarques importantes sur la synchronisation multijoueur
Bien que dans un point de vue à la première personne Je ne peux pas voir mon propre modèle de décoration (parce que le [équipement] local est désactivé), le jeu reste Synchronisez votre statut via le réseau. Cela signifie que tant que vous Gérer correctement la logique de synchronisation multijoueur, les autres joueurs peuvent toujours voir les changements et les mouvements de votre modèle de décoration.
Par conséquent, même si le script local ne peut pas être exécuté parce que [RIG] est désactivé, vous pouvez toujours utiliser Gestionnaire global ou mécanisme de synchronisation réseau, permettant Tous les joueurs à voir Modifications à votre modèle de décoration. Ceci pour Décoration interactive.
Points à considérer lors de la mise en œuvre de la logique de comportement du modèle:
- Politique de montage de script -Considérez l’utilisation d’un gestionnaire global ou d’un système d’événements comme alternative
- La différence entre les rôles de scène et les rôles de menu -Certains scripts peuvent ne fonctionner que dans un contexte spécifique
- Problème de synchronisation multijoueur -Assurer un comportement cohérent entre les clients réseau
- Statut d'activation du composant -Les composants sur les objets de jeu désactivés n'exécutent pas la méthode Update/FixedUpdate
- Gestion des ressources -Initialiser et nettoyer correctement les ressources pour éviter les fuites de mémoire
- Autorité sur le Web -Considérez quelles opérations doivent être effectuées localement et lesquelles nécessitent une synchronisation réseau
À partir de la version 1.2.4, MoreHead fournit des interfaces API publiques pour étendre les fonctionnalités. Ces interfaces permettent aux développeurs de charger des ressources AssetBundle par programmation, d'injecter des scripts personnalisés et d'améliorer les fonctionnalités de décoration.
Ce qui suit estGestionnaire de coiffureInterfaces publiques disponibles dans la classe:
| Méthodologie | Description |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assemblée) |
Charge tous les intégrés dans l'assemblage spécifié. hhhRessources |
Recréer () |
Actualiser l'interface utilisateur pour afficher les décorations nouvellement chargées |
GetDecorationsFromAssembly(Assemblée assemblée) |
Renvoie la liste de tous les ornements chargés à partir de l'assemblage spécifié |
GetDecorationGameObjectsFromAssembly(Assemblée assemblée) |
Renvoie la liste de toutes les préformes GameObject chargées à partir de l'assemblage spécifié |
GetDecorationByName (assemblage assemblage, chaîne décorationName) |
Recherche des ornements spécifiques dans l'assemblage spécifié en fonction du nom |
FindDecorationsByPartialName (assemblage assembly, chaîne partialName) |
Rechercher des décorations qui contiennent le nom de la section spécifiée |
Il existe deux façons principales d’utiliser l’API de MoreHead pour l’extension de fonctionnalité:
Vous pouvez mettre AssetBundle (. hhh) Le fichier est directement intégré dans la DLL comme une ressource embarquée:
Fichier ajouté à votre projet//Charger toutes les ressources. hhh intégrées à partir de votre assemblage Assembly assembly = Assembly.GetExecutingAssembly (); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assemblage); MoreHead.HeadDecorationManager.RecreateUI ();
Attention: L’intégration d’une ressource dans une DLL n’est pas obligatoire. Vous pouvez également utiliser la méthode standard de MoreHead pour charger le local
. hhhFichier, utilisez uniquement votre DLL pour injecter le script et implémenter la fonctionnalité.
Vous pouvez écrire des scripts pour accéder et modifier les ornaments, qu'ils soient chargés à partir de votre DLL ou d'une autre source:
Utiliser BepInEx Utilisation de BepInEx.Logging Utilisation du système. Réflexion; Utilisation de UnityEngine Utilisation de System.Collections.Generic namespace MyCustomDecorations {[BepInPlugin("com.yourname.customdecorations","MOD de décoration personnalisée","1.0.0 ") ] [BepInDependency("Mhz.REPOMoreHead ", BepInDependency.DependencyFlags.HardDependency)] Classe publique CustomDecorationsPlugin: BaseUnityPlugin {public static CustomDecorationsPlugin Instance {get; private set;} Private ManualLogSource_Logger; private const string TARGET_MODEL_NAME="Cigar Cigar"; //Nom du modèle cible private void Awake () {Instance = this; _Logger = Logger; _logger.LogInfo("MOD de décoration personnalisé chargé ");//Charger la décoration et définir le script de traitement LoadDecorations ();} private void LoadDecorations () {try {//Obtenir l'assemblage actuel assembly assembly = assembly.GetExecutingAssembly ();//Charger toutes les ressources. hhh dans la DLL actuelle MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); //Reconstruire l'interface utilisateur pour afficher le modèle nouvellement chargé MoreHead.HeadDecorationManager.RecreateUI (); //Trouver une liste de modèles spécifiques qui correspondent au nom de la cible<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly, TARGET_MODEL_NAME); if(targetDecorations.Count>0) {_logger.LogInfo($"{targetDecorations.Count} a trouvé un modèle correspondant à '{TARGET_MODEL_NAME}' ");//Ajouter un composant foreach (var decoration in targetDecorations) pour chaque modèle cible trouvé {if(decoration.Prefab!=null&&decoration.Prefab.GetComponent<SpaceKeyHandler>() ==null) {_logger.LogInfo($"Ajouter un SpaceKeyHandler pour {decoration.DisplayName} "); decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}} catch(System.Exception ex) {_logger.LogError($"Erreur lors du traitement de la décoration: {ex.Message}");}}//Classe utilisée pour gérer le comportement de la décoration public class SpaceKeyHandler: MonoBehaviour {// Enregistrer un journal lors de l'initialisation du composant Instance._logger.LogInfo ($"SpaceKeyHandler initialisé sur {gameObject.name});}}}} {// Enregistrer un message directement dans le composant if (Input.GetKeyDown(KeyCode.Space)) {// Enregistrer un message simple lors du déclenchement Instance._logger.LogInfo ($"SpaceKeyHandler initialisé sur {gameObject.name}
⚠ Royaumes Remarques importantes
Le script ne doit pas nécessairement être lié au modèle correspondant et peut être traité à la demande pour améliorer la fonctionnalité. Par exemple, le code exemple ci-dessus ne peut être utilisé que dansLorsqu'un personnage est affiché dans le menuJournal de sortie en réponse à des espaces.
Pourquoi est-ce arrivé?
Parce que le jeu estPerspective à la première personneLa prochaine fois, le rôle local sera
L'objet de jeu est défini surétat inactif(SetActive (faux))。
[Plate-forme]Est l'objet parent qui contient le modèle de rôle,Le modèle décoratif de MoreHead est également monté sous ce niveau。- 当
Lorsqu'il est désactivé, selon le mécanisme de fonctionnement d'Unity, sesComposants de tous les objets enfant的Mise à jour、Mise à jour de correctionApproche de cycle de vie égaleNe sera pas appelé。- Les modèles décoratifs personnalisés sont également placés dans
[Plate-forme]Hiérarchique, donc lorsque vous montez des scripts directement sur le modèle, une fois dans la perspective à la première personne, ces scripts seront désactivés parce que l'objet parent est désactivéImpossible d'exécuter correctement。- Et dans le jeuInterface de menuDans, le modèle de rôle reste toujoursStatut d'activation, le script monté sur la décoration fonctionne correctement à ce stade, car Unity n'exécutera que les méthodes de composants sur l'objet de jeu à l'état actif.
Ce genre deDifférences dans les états d’activationC'est le point clé qui explique pourquoi le même script se comporte de manière incohérente dans différents scénarios.
Remarques importantes sur la synchronisation multijoueur
Bien que dans un point de vue à la première personneVous ne voyez pas votre propre modèle de décoration(Parce que le [RIG] local est désactivé), mais le jeu sera toujours dansSynchronisez votre état dans le réseau。 Cela veut dire que tant que vousGérer correctement la logique de synchronisation multijoueur, les autres joueurs peuvent toujours voir les changements et les mouvements de votre modèle décoré.
Par conséquent, même si le script local n'est pas exécuté en raison de la désactivation [RIG], vous pouvez toujours utiliserGestionnaire global ou mécanisme de synchronisation réseauPour obtenir des effets interactifs et laisserVisible à tous les joueursLes changements survenus dans votre modèle de décoration. Cela a crééDécoration interactiveOffre des possibilités.
Lors de la mise en œuvre de la logique de comportement du modèle, vous devez prêter attention aux points suivants:
- Politique de montage de script -Envisager d’utiliser des méthodes alternatives comme un gestionnaire global ou un système d’événements
- La différence entre les rôles de scène et les rôles de menu -Certains scripts peuvent ne fonctionner que dans un contexte spécifique
- Problème de synchronisation multijoueur -Assurer un comportement cohérent entre les clients réseau
- Statut d'activation du composant -Les composants sur les objets de jeu désactivés n'exécutent pas la méthode Update/FixedUpdate
- Gestion des ressources -Initialiser et nettoyer correctement les ressources pour éviter les fuites de mémoire
- Autorisations réseau -Considérez quelles opérations doivent être effectuées localement et lesquelles nécessitent une synchronisation réseau
Plus de chapeaux
Capture d'écran de la décoration de la sélection auxiliaire (Aucune garantie)
Plus de chapeaux
Fournir des captures d'écran des décorations pour une sélection facile (Sans garantie)
Mosaïque Mosaïque:
Yuriscat Calypso Calypso, le chat de Yuri:Bilibili
Si vous avez des questions et des suggestions, veuillez envoyer une question:
Si vous avez des questions et des suggestions, veuillez soumettre des questions:Problèmes avec GitHub
Vous voulez nous soutenir avec du café et des cristaux énergétiques jaunes?
Vous voulez nous offrir du café et acheter des cristaux énergétiques jaunes?
Faites un don sur Hi-Fi
Whisper, nous travaillons sur un jeu indépendant!
D'ailleurs, nous faisons des jeux indépendants!

Téléchargez les mods
Installez LagoFast, démarrez R.E.P.O. et jouez avec les mods que vous aimez.