Morehead

Auteur:YMC_MHZDernière mise à jour :06/08/2025 08:42:5310.4M2.1MB

R.E.P.O. Morehead-1-modérateur lagofast

Présentation du module

Produits cosmétiques personnalisables. Module de décoration simple et amusant, fournissant un package unitaire permettant aux joueurs d'importer eux-mêmes des modèles.

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

Introduction

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.

Comment utiliser Comment utiliser

  1. Installez ce mod Et entrer dans le jeu.
  2. Vous pouvez trouver Le bouton "MoreHead" dans le coin inférieur gauche Ou Dans le hall or Après être entré au niveau (presse ).
  3. Cliquez sur le bouton pour changer de cosmétique.

  1. Installez ce module, entrer dans le jeu.
  2. Lors de la phase de préparation du hallAprès avoir officiellement entré dans le niveau, appuyez sur ESC, peut être trouvé dans le coin inférieur gauche Bouton "MoreHead"
  3. Cliquez sur le bouton pour changer de cosmétique.








⚠ Royaumes Déclaration de compatibilité Note de compatibilité ⚠ Royaumes

Cliquez pour voir Cliquez pour agrandir

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.8 Ou plus tôt, s'il vous plaît garder Menoulib En 2.1.1 Ou 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.8 Ou une version antérieure, assurez-vous Menoulib Toujours pour 2.1.1 Ou 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.


Previous: Version précédente

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.



Options de configuration Options de configuration

Cliquez pour voir Cliquez pour agrandir

Anglais

MoreHead fournit plusieurs options de configuration qui peuvent être modifiées dans le fichier de configuration BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):

Paramètres de l'interface utilisateur

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.

Mode liste noire

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écoration
  • Utilisation Maj + Tout effacer Effacer toute la liste noire en une seule fois
  • ⚠ Royaumes Toutes les modifications de la liste noire entrent en vigueur après le redémarrage du jeu

Les 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.json Fichier 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.

Abattage forestier

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.

Emplacement du fichier

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/ or
BepInEx/Plug-in/Morehead/Décoration/
Modèle de décoration personnalisé

Remarques: [Unity.persistentDataPath] Habituellement analysé comme:

  • Windows: C: /Users/[Votre Nom]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/bibliothèque/support application/semiwork/répo/

Description du fichier

  • MoreHeadConfig.json: Stockage de l’état activé/désactivé de chaque décor (mode équipement unique-pour la rétrocompatibilité)
  • MoreHeadOutfits.json: Stockage jusqu'à 5 configurations de décoration différentes que vous pouvez basculer à l'aide de l'interface utilisateur ou des touches de fonction F1-F5
  • Mhz.REPOMoreHead.cfg: Contient des paramètres pour la position du bouton de l'interface utilisateur, la commutation du mode de liste noire et les options de journal
  • MoreHeadBlacklist.json: Contient une liste de noms de décoration qui devraient être masqués du menu de l'interface utilisateur (le mode de liste noire doit être activé)
  • Décorer le fichier. hhh: Pack d’actifs contenant des modèles 3D décoratifs, qui peuvent être placés n’importe quel endroit

Chinois

MoreHead fournit plusieurs options de configuration qui peuvent être modifiées dans le fichier de configuration BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):

Paramètres de l'interface utilisateur

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.

Mode liste noire

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 noire
  • Utilisation Maj + Tout effacer Toutes les entrées de la liste noire peuvent être effacées en même temps
  • ⚠ Royaumes Toutes les opérations liées à la liste noire doivent être redémarrées avant d'entrer en vigueur

Les 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.json Fichier 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.

Journalisation

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.

Emplacement du fichier

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 à:

  • Windows: C:/Users/[Votre nom d'utilisateur]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/bibliothèque/support application/semiwork/répo/

DESCRIPTION DES

  • MoreHeadConfig.json: Stockage de l'état activé/désactivé de chaque décor (mode équipement unique-pour la compatibilité rétroactive)
  • MoreHeadOutfits.json: Stockage jusqu'à 5 configurations de décoration différentes, commutables via l'interface utilisateur ou les touches de fonction F1-F5
  • Mhz.REPOMoreHead.cfg: Contient des paramètres pour les positions des boutons UI, les commutateurs de mode liste noire et les options de journalisation
  • MoreHeadBlacklist.json: contient une liste de noms de décoration qui doivent être masqués dans le menu de l'interface utilisateur (le mode de liste noire doit être activé)
  • Décorer le fichier. hhh: Ensemble d'actifs contenant des modèles 3D décoratifs, qui peuvent être placés n'importe où



Comment ajouter un modèle Comment ajouter un modèle

Cliquez pour voir Cliquez pour agrandir

Tutoriel d'anglais

  1. 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.

    📥 Télécharger unitypackage

  2. 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.

  3. 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 Royal Mondiale Les 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 ».

  4. 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.

  5. Placez le modèle dans A et ajustez-le à la bonne position.

  6. 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.

  7. 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.

  8. Cliquez Construire tous les AssetBundles, puis trouve 【Nom de votre décoration】.hhh Documents dans Regroupement d'actifs Dossier.

    Seulement . hhh Des fichiers sont nécessaires pour l'installation. Les autres fichiers générés peuvent être ignorés.

  9. 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 emballer MoreHead.dll Fichier dans votre Mod, seulement . hhh Les fichiers et ce module sont nécessaires pour profiter de la décoration.

  10. 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.

Tutoriel chinois

  1. 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

    📥 Télécharger unitypackage

  2. 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.

  3. 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.
    💡 Mondiale Les é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 ».

  4. 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.

  5. Placez le modèle dans A et ajustez-le à la bonne position

  6. 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.

  7. 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.

  8. CliquezConstruire tous les AssetBundles, puis dansRegroupement d'actifsTrouvé dans le dossier[Nom de votre ornement].hhhDes documents.

    Il faut seulement lors de l'installationFichiers, les autres fichiers générés peuvent être ignorés.

  9. 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.

  10. 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.



API et extensions pour développeurs API et extensions pour développeurs

Cliquez pour voir Cliquez pour agrandir

Documentation en anglais


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.

API publique

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

Approche intégrée

Il existe deux façons principales d’exploiter l’API de MoreHead pour étendre la fonctionnalité:

1. Intégrer AssetBundles en tant que ressource

Vous pouvez intégrer un AssetBundle () fichier directement dans votre DLL en tant que ressource intégrée:

  1. Créez des AssetBundles en suivant la procédure standard décrite dans la section « Comment ajouter un modèle »
  2. Dans Visual Studio (ou l'IDE préféré):
    • Ajouter Documents dans le projet
    • Définissez leur "action de construction" sur "ressource intégrée"
  3. Dans le code d'initialisation du plugin:
    //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 . hhh Fichiers et utilisez simplement votre DLL pour l'injection de scripts et l'implémentation de fonctionnalités.


2. Injection de script programmatique

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:

  1. Accès aux préfabriques décoratives à l’aide de l’API fournie
  2. Ajouter des composants/scripts personnalisés pour améliorer la fonctionnalité
  3. Mettre en œuvre sa propre logique de comportement décoratif

EXEMPLE DE REALISATION

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'eux Mise à jour, Mise à jour de correction Et 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:

  1. Politique de montage de script -Considérez l’utilisation d’un gestionnaire global ou d’un système d’événements comme alternative
  2. 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
  3. Problème de synchronisation multijoueur -Assurer un comportement cohérent entre les clients réseau
  4. Statut d'activation du composant -Les composants sur les objets de jeu désactivés n'exécutent pas la méthode Update/FixedUpdate
  5. Gestion des ressources -Initialiser et nettoyer correctement les ressources pour éviter les fuites de mémoire
  6. Autorité sur le Web -Considérez quelles opérations doivent être effectuées localement et lesquelles nécessitent une synchronisation réseau

Documentation chinoise


À 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.

Interface API exposée

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

Approche intégrée

Il existe deux façons principales d’utiliser l’API de MoreHead pour l’extension de fonctionnalité:

1. Intégrer AssetBundle en tant que ressource

Vous pouvez mettre AssetBundle (. hhh) Le fichier est directement intégré dans la DLL comme une ressource embarquée:

  1. Créez un AssetBundle selon le processus standard dans la section « Comment ajouter un modèle »
  2. Dans Visual Studio (ou l'IDE de votre choix):
    • Fichier ajouté à votre projet
    • Définissez leur « action de génération » sur « ressources embarquées »
  3. Dans votre code d'initialisation du plugin:
    //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é.


2. Injection de script programmatique

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:

  1. Accès aux préformes de décoration à l'aide de l'API fournie
  2. Ajouter des composants/scripts personnalisés pour améliorer la fonctionnalité
  3. Mettez en œuvre votre propre logique de comportement des ornements

Exemples de mise en œuvre

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 seraL'objet de jeu est défini surétat inactifSetActive (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 enfantMise à jourMise à 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:

  1. Politique de montage de script -Envisager d’utiliser des méthodes alternatives comme un gestionnaire global ou un système d’événements
  2. 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
  3. Problème de synchronisation multijoueur -Assurer un comportement cohérent entre les clients réseau
  4. Statut d'activation du composant -Les composants sur les objets de jeu désactivés n'exécutent pas la méthode Update/FixedUpdate
  5. Gestion des ressources -Initialiser et nettoyer correctement les ressources pour éviter les fuites de mémoire
  6. Autorisations réseau -Considérez quelles opérations doivent être effectuées localement et lesquelles nécessitent une synchronisation réseau



Projet de mise à jour future Projet de mise à jour future

  • 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)



Informations sur les auteurs Informations sur les auteurs

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!

Cet outil est fourni par le tiers [bufftool]Icône d'attention

Téléchargez les mods

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