
Autor:YMC_MHZÚltima actualización:2025-08-06 08:42:5310.4M2.1MB
Todos los modelos fueron creados por Calypso, el gato de Yuri, exclusivamente para este mod: 3
Todos los modelos son creados porEl gato de Yuri CalypsoHecho para este mod: 3

Un mod decorativo sencillo y divertido que ofrece un Para que los jugadores importen modelos personalizados.
Por el momento, solo hay unas pocas decoraciones disponibles, pero están previstas más actualizaciones.
Menú de Nick Mau El mod es un requisito previo.
Si tienes problemas con pérdida de fuerza, descargue Fuerza de fijación Patrones.
Módulos de decoración simples y divertidos que proporcionan unitypackage, para que los jugadores importen modelos personalizados.
Actualmente solo hay unas pocas decoraciones y seguirán actualizándose en el futuro.
Necesita instalar Menú de Nick Mau Módulo frontal.
Si tienes problemas de pérdida de fuerza, descargue Fuerza de fijación Módulo.
* La boca del pollo en la captura de pantalla es de EvenMoreHead.
).ESC, se puede encontrar en la esquina inferior izquierda Botón "Más cabeza"。


Con Actualizar a 2.1.3, Morehead Debe actualizarse a 1.3.0 O puede funcionar correctamente más tarde.
⚠ ️ Si sigue usando
Morehead 1.2.8O antes, por favor mantengaMenulibEn2.1.1O antes para evitar problemas de compatibilidad.
Para obtener la mejor experiencia y estabilidad, recomendamos utilizar siempre la última versión.
Actualizado a 2.1.3, por lo tanto Morehead Necesita actualizar a 1.3.0 O versión superior para funcionar correctamente.
⚠ ️ Si sigue usando
Morehead 1.2.8O versiones anteriores, asegúrese deMenulibSigue siendo2.1.1O versiones anteriores, de lo contrario pueden ocurrir problemas de compatibilidad.
Para garantizar la mejor experiencia y estabilidad, se recomienda utilizar siempre la última versión.
→ 1.2.8+
1.0.3 → 1.1.8+ Obligatorio.
Menulib 2.0.0 → necesidad Morehead 1.2.8+
Menulib 1.0.3 → necesidad Morehead 1.1.8+ Edición.
MoreHead ofrece varias opciones de configuración que se pueden modificar en el archivo de configuración de BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):
| Opciones | ||
|---|---|---|
| EscButtonPosX | Posición del botón X Más cabeza en el menú ESC | 0 |
| EscButtonPosY | Y Posición del botón Morehead en el menú ESC | 0 |
| Botón Lobby POSX | Posición del botón X Morehead en el lobby | 0 |
| El botón Lobby | Y Posición del botón Morehead en el lobby | 0 |
Ajustar estos valores le permite reposicionar el botón MoreHead si entra en conflicto con otros elementos de la interfaz de usuario del mod.
| Opciones | Descripción | Valor predeterminado |
|---|---|---|
| Modo lista negra | Establecer en "ENABLE_BLACKLIST" para habilitar la función de lista negra | "" (desactivado) |
Cuando el modo de lista negra está habilitado:
Mantenga presionada la tecla Shift y haga clic en Añadir/eliminar elementos de la lista negra en el botón de decoraciónShift+Borrar todo Limpiar toda la lista negra a la vezLas decoraciones incluidas en la lista negra no aparecerán en tu menú de decoraciones, lo cual es útil para ocultar artículos que no quieres usar.
💡 Sugiere a un jugador para administrar la lista negra y a través del código mod o
BepInEx/config/MoreHeadBlacklist.jsonArchivos para asegurar la sincronización de la apariencia en juegos multijugador.
💡 Antes de compartir, asegúrese de desactivar el modo de lista negra (borrar los valores de configuración) para evitar que otros jugadores cambien accidentalmente.
| Opciones | Valor predeterminado | |
|---|---|---|
| EnableVerboseLogging | Habilitar el registro detallado para la carga del modelo | False |
Habilite esta opción para ver registros más detallados del proceso de carga del modelo, lo que puede ayudar a solucionar problemas.
| Documentación | Camino | Descripción |
|---|---|---|
| MásHeadConfig.json | |
El perfil principal donde se almacena el estado de la decoración |
| MásCabezaOutfits.json | [Unity.persistentDataPath]/REPOModData/MásCabeza/ |
Puede almacenar hasta 5 configuraciones de equipamiento |
| Mhz.REPOMoreHead.cfg | |
Perfil de BepInEx con posicionamiento de la interfaz de usuario y otras configuraciones |
| MásCabezaBlacklist.json | BepInEx/config/ |
Lista negra de archivos para ocultar decoraciones no deseadas |
| Decoración (archivo. hhh) | BepInEx/Plugins/ OBepInEx/Plugins/Morehead/Decoración/ |
Modelos decorativos personalizados |
Notas: [Unity.persistentDataPath] Normalmente se resuelve como:
C:/Usuarios/[Su Nombre]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/biblioteca/soporte de aplicación/semiwork/Repo/MoreHead ofrece varias opciones de configuración que se pueden modificar en el archivo de configuración de BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):
| Opciones | Descripción | Valor predeterminado |
|---|---|---|
| EscButtonPosX | Coordenada X del botón MásCabeza en el menú ESC | 0 |
| EscButtonPosY | Coordenada Y del botón MásCabeza en el menú ESC | 0 |
| Botón Lobby POSX | La coordenada X del botón MásCabeza en el lobby | 0 |
| El botón Lobby | La coordenada Y del botón MásCabeza en el lobby | 0 |
Ajustar estos valores puede reubicar el botón MoreHead para evitar conflictos con elementos de la interfaz de usuario de otros módulos.
| Opciones | Descripción | Valor predeterminado |
|---|---|---|
| Modo lista negra | Establezca en "ENABLE_BLACKLIST" para habilitar la función de lista negra | "" (desactivado) |
Después de habilitar el modo de lista negra:
Desplazamiento + Haga clic Botón de cosméticos para agregar/eliminar elementos de la lista negraShift+Borrar todo Puede borrar todas las entradas de la lista negra a la vezLos cosméticos incluidos en la lista negra no aparecerán en tu menú de decoración, lo cual es útil para ocultar artículos que no quieres usar.
💡 Se recomienda mantener una lista negra por un jugador, compartiendo el código del mod o enviándolo directamente
BepInEx/config/MoreHeadBlacklist.jsonArchivo para garantizar la sincronización de la apariencia durante juegos multijugador.
💡 Asegúrese de desactivar el modo de lista negra (borrar la cadena del elemento de configuración) antes de compartir para evitar que otros jugadores lo toquen accidentalmente y provoquen que los datos no estén sincronizados.
| Opciones | Descripción | Valor predeterminado |
|---|---|---|
| EnableVerboseLogging | Habilitar el registro detallado de la carga del modelo | False |
Habilite esta opción para ver registros más detallados del proceso de carga del modelo, lo que puede ayudar a solucionar problemas.
| Documentación | Camino | Descripción |
|---|---|---|
| MásHeadConfig.json | |
Perfil principal, que almacena el estado de la decoración |
| MásCabezaOutfits.json | [Unity.persistentDataPath]/REPOModData/MásCabeza/ |
Almacena hasta 5 configuraciones de equipamiento |
| Mhz.REPOMoreHead.cfg | |
Perfil de BepInEx con posicionamiento de la interfaz de usuario y otras configuraciones |
| MásCabezaBlacklist.json | BepInEx/config/ |
Archivos de lista negra para ocultar decoraciones no deseadas |
| Archivo de decoración (archivo. hhh) | BepInEx/Plugins/ 或BepInEx/Plugins/Morehead/Decoración/ |
Modelo decorativo personalizado |
Atención: [Unity.persistentDataPath] Normalmente corresponde a:
C:/Usuarios/[tu nombre de usuario]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/biblioteca/soporte de aplicación/semiwork/Repo/Configuración de Unity (2022.3* Recomendado, el juego utiliza una tubería de renderizado incorporada, preste atención al material del modelo correspondiente), importar MásHead-Asset-Pack_v1.3.unitypackage.
Importa tus modelos Y Arrastrar Avatar del jugador Prefabricado en la escena.
Asegúrese de que su modelo es compatible con Unity y, si hay animaciones, está montado correctamente.
Las siguientes piezas se encuentran En Avatar del jugador, donde se colocará el modelo:
| Name | Descripción | Etiquetas |
|---|---|---|
| Decoración de la cabeza (no se mueva) | Cabeza levantada al hablar | Cabeza |
| Decoración del cuello (no se mueva) | Área de la barbilla/pecho | Cuello |
| Decoración del cuerpo (no se mueva) | Cuerpo | Cuerpo |
| Decoración de la cadera (no se mueva) | Área de cadera/parte inferior del cuerpo | Cadera |
| Decoración del brazo en L (no se mueva) | Brazo izquierdo | Brazo izquierdo |
| Decoración del brazo R (no se mueva) | Brazo derecho | Brazo derecho |
| Decoración de la pierna L (no se mueva) | Pierna izquierda | Pierna izquierda |
| Decoración de la pierna R (no se mueva) | Pierna derecha | Pierna derecha |
| Decoración del mundo (no te muevas) | Sigue la posición del carácter pero mantenga la orientación horizontal | |
⚠ ️ Estas ubicaciones son referencias de anclaje. No modifiques las coordenadas, de lo contrario tu modelo estará fuera de alineación durante el juego.
💡 ElMundialesLos marcadores son útiles para decoraciones que deben mantener su orientación horizontal independientemente del movimiento del personaje.
💡 Las etiquetas relacionadas con las extremidades (brazo izquierdo, brazo derecho, pierna izquierda, pierna derecha) se pueden ver juntas en el juego bajo la etiqueta principal "extremidades".
Cree un objeto vacío debajo de la parte de destino (A para abreviar) y nombralo.
Este nombre se mostrará en el juego como el nombre de su decoración.
Poner el modelo en A y ajustarlo a la posición adecuada.
Arrastra A a Proyectos Ventana para crear preajustes.
⚠ ️ Nota: Evite agregar componentes colisionadores a modelos decorativos, ya que pueden afectar la física del personaje, causando problemas de rotación o movimientos inestables. Para las interacciones colisionales, se consideran técnicas alternativas.
Ejecutar Herramientas → Generador de decoración de cabeza, arrastre su A prefab (o más, admite exportación por lotes) al panel de scripts, seleccione la sección correspondiente del paso 3 y luego Haga clic Añadir un modelo a la lista.
Asegúrese de seleccionar la parte correcta del cuerpo (cabeza/cuello/cuerpo/caderas, etc.) que coincida con el lugar donde coloca la decoración.
Haga clic Construir todos los paquetes de activos, entonces encontrar 【Nombre de tu decoración】.hhh Archivos en Empaquetamiento de activos Carpeta.
Solamente
. hhhSe requieren archivos para la instalación. Otros archivos generados pueden ser ignorados.
Movilización Archivo a BepInEx\ Plugins (El juego cargará todos los archivos. hhh en la carpeta de plugins. Si no estás seguro de dónde ponerlos, puedes ponerlo en \MásCabeza\Decoraciones Para una mejor organización).
⚠ ️ Para visibilidad multijugador: tú y tus amigos deben tener el mismo
Instale el archivo para ver la decoración correcta.
⚠ ️ NO EMPAQUEMásHead.dllArchivos en su Mod, solo. hhhEl archivo y este módulo son necesarios para disfrutar de la decoración.
¡Comienza a jugar y disfruta!
Presione la tecla ESC en el juego y encuentre "Más cabeza" en la esquina inferior izquierda para acceder a su nueva decoración.
Implementar Unity(Se recomienda la versión 2022.3*, el juego utiliza una tubería de renderizado incorporada, preste atención al material del modelo correspondiente), importar MásHead-Asset-Pack_v1.3.unitypackage。
Importar el modelo y poner Arrastre la prefabricada a la escena。
Asegúrese de que su modelo sea compatible con Unity, si hay animaciones que requieren unir correctamente los huesos.
Encuentra Avatar del jugador Las siguientes partes en, correspondientes a la ubicación donde se colocará el modelo:
| Nombre | Descripción | Etiquetas |
|---|---|---|
| Decoración de la cabeza (no se mueva) | Cabeza que se levanta cuando habla | Cabeza |
| Decoración del cuello (no se mueva) | Barbilla/pecho | Cuello |
| Decoración del cuerpo (no se mueva) | Cuerpo | Cuerpo |
| Decoración de la cadera (no se mueva) | Caderas/Inferior del cuerpo | Cadera |
| Decoración del brazo en L (no se mueva) | Brazo izquierdo | Brazo izquierdo |
| Decoración del brazo R (no se mueva) | Brazo derecho | Brazo derecho |
| Decoración de la pierna L (no se mueva) | Pierna izquierda | Pierna izquierda |
| Decoración de la pierna R (no se mueva) | Pierna derecha | Pierna derecha |
| Decoración del mundo (no te muevas) | Muévete siguiendo la posición del personaje pero manteniendo la orientación horizontal | |
⚠ ️ Estas ubicaciones son referencias de anclaje de coordenadas. No modifique las coordenadas, de lo contrario su modelo estará mal alineado en el juego.
💡MundialesLas etiquetas son adecuadas para adornos que necesitan mantener su orientación horizontal, independientemente de cómo se mueva el personaje.
💡 Las etiquetas relacionadas con las extremidades (leftarm, leftarm, leftleg, leftleg) se pueden ver uniformemente en el juego a través de la etiqueta principal "LIMBS".
Cree un objeto vacío (llamado A) debajo del lugar de destino y dáselo un nombre。
Este nombre aparecerá en el juego como el nombre de tu decoración.
Coloque el modelo en A y ajuste a la posición adecuada。
Arrastre A aProyectosVentana, crear una preforma。
⚠ ️ Consejo: No agregue componentes de cuerpo de colisión a modelos decorativos. Los cuerpos de colisión pueden afectar el comportamiento físico del personaje, causando rotación anormal o movimientos inestables. Para la interacción de colisión, considere utilizar otras implementaciones técnicas.
EjecutarHerramientas → Generador de decoración de cabeza, arrastre una preforma A (o más, admite exportación por lotes) y seleccione la parte correspondiente en el paso 3, luegoAñadir un modelo a la lista。
Asegúrese de seleccionar la parte correcta del cuerpo (cabeza/cuello/cuerpo/caderas, etc.) que coincida con dónde coloca la decoración.
Haga clicConstruir todos los paquetes de activos, entonces enEmpaquetamiento de activosEncontrado en la carpeta[nombre de tu decoración].hhhDocumentos.
Sólo se requiere para la instalación
Archivos, otros archivos generados se pueden ignorar.
将Mover el archivo aBepInEx\ Plugins(Iniciar el juego cargará todos los archivos. hhh en los complementos. Si no sabe dónde colocarlos, puede colocarlos en\MásCabeza\DecoracionesFácil de administrar).
⚠ ️ Visibilidad multijugador: tú y tus amigos deben instalar el mismo
. hhhArchivos para ver el uno al otro la decoración correcta.
⚠ ️ No empacesMásHead.dllArchivos en su Mod, simplemente. hhhPuedes jugar con accesorios con el archivo y este mod.
Inicia el juego y disfruta de la decoración!
Presione ESC en el juego y encuentre "More Head" en la esquina inferior izquierda para acceder a su nueva decoración.
A partir de la versión 1.2.4, MoreHead proporciona una API pública para extensiones. Estas interfaces permiten a los desarrolladores cargar recursos AssetBundle de forma programática, inyectar scripts personalizados y mejorar las capacidades decorativas.
Las siguientes interfaces públicas están disponibles en Gerente de tocados Categoría:
| Metodología | Descripción |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assembly) |
Cargar todo . hhh Especificar los recursos incrustados en el ensamblaje |
Recrear () |
Actualiza la interfaz de usuario para mostrar las decoraciones recién cargadas |
GetDecorationsFromAssembly(ensamblaje de la asamblea) |
Devuelve una lista de todas las decoraciones cargadas desde el ensamblaje especificado |
GetDecorationGameObjectsFromAssembly(ensamblaje de asamblea) |
Devuelve una lista de preajustes de GameObject cargados desde el ensamblaje especificado |
GetDecorationByName (ensamblaje de ensamblaje, cadena decorationName) |
Encuentre una decoración específica por nombre desde el ensamblaje especificado |
FindDecorationsByPartialName (ensamblaje de ensamblaje, cadena Nombre parcial) |
Buscar decoraciones que contengan el nombre de la sección especificada |
Hay dos formas principales de aprovechar la API de MoreHead para ampliar la funcionalidad:
Puede incrustar un AssetBundle () como un recurso incrustado directamente en su DLL:
Documentos en el proyecto//Cargue todos los recursos. hhh incrustados de su ensamblaje Assembly assembly.getExecutingAssembly (); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(ensamblaje); MoreHead.HeadDecorationManager.RecreateUI ();
Notas: Incrustar recursos en una DLL no es obligatorio. También puede usar el método estándar de MoreHead para cargar local
. hhhArchivos y simplemente use su DLL para la inyección de scripts y la implementación de funciones.
Puede escribir scripts para acceder y modificar las decoraciones, ya sean cargadas desde una DLL u otra fuente:
Utilizar BepInEx Utilizando BepInEx.Logging Utilización del sistema. reflexión; Uso de UnityEngine Trabajar con System.Collections.Generic Espacio de nombres MyCustomDecorations {[BepInPlugin("com.yourname.customdecorations "," Custom Decorations Mod "," 1.0.0 ")] [BepInDependency (" Mhz.REPOMoreHead ", BepInDependency.DependencyFlags.HardDependency)] Clase pública 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("Decoración personalizada Mod loaded "); //carga la decoración y establece el manejador LoadDecorations (); } private void LoadDecorations () {try {//Obtener el ensamblaje actual Assembly Assembly.getExecutingAssembly ();//Cargar todos los recursos. hhh desde la DLL actual MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(Assembly);//Recrear la interfaz de usuario para mostrar el modelo recién cargado MoreHead.HeadDecorationManager.RecreateUI ();//Buscar un modelo específico que coincida con la lista de nombres de destino<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly, TARGET_MODEL_NAME); if(targetDecorations.Count>0){ _logger.LogInfo($"found {targetDecorations.Count} models match '{TARGET_MODEL_NAME}' ");//Añadir componentes a cada modelo objetivo encontrado foreach (var decoration en targetDecorations){ if(decoration.Prefab!=null && decoration.Prefab.GetComponent<SpaceKeyHandler>() ==null) {_logger.LogInfo($"Añadir SpaceKeyHandler a {decoration.DisplayName}");decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}} catch(System.Exception ex) {_logger.LogError($"Error procesando decoraciones: {ex.Message}");}}//Clases para procesar comportamientos de decoración Clases públicas SpaceKeyHandler: MonoBehaviour {// Registrar Instance._logger.LogInfo($"SpaceKeyHandler inicializado en {gameObject.name}");} private void Update (); if (Input.GetKeyDown(KeyCode.Space)); if ($"SpaceKeyHandler: {"SpaceKeyDown(KeyCode.Space)); if ($"SpaceKeyHandler: {"SpaceDown(KeyCode.Space)); if
⚠ ️ Notas importantes
Los scripts no necesariamente necesitan estar unidos al modelo correspondiente, impleméntelos según sea necesario para obtener la funcionalidad correcta. Por ejemplo, el código de muestra anterior solo responde a la pulsación de la barra espaciadora cuando se muestran caracteres en el menú.
¿Por qué ocurre esto?
Porque desde una perspectiva en primera persona, el juego establece personajes locales
[Plataforma de perforación]Objetos de juego Inactivo (SetActivo(falso)).
Es el objeto padre que contiene el modelo de rol, y La decoración de Morehead también se instala bajo esta jerarquía.- Cuándo
Según el mecanismo de Unity, Todos los componentes de un objeto hijo No habrá ellosActualización,Reparar actualizacionesY otros enfoques del ciclo de vida Llamar.- Los modelos decorativos personalizados también se colocan en
[Plataforma de perforación]Jerarquía, por lo que cuando se adjuntan scripts directamente al modelo, una vez en la vista en primera persona, estos scripts No se puede ejecutar correctamente Porque el objeto padre está deshabilitado.- Sin embargo, en el juego Interfaz de menú, el modelo de rol siempre se mantiene Activo, por lo que el script adjunto a la decoración funciona correctamente, ya que Unity solo ejecuta métodos de componentes en los GameObjects activos.
Este Diferencia de estado de activación Es un punto clave que explica por qué el mismo guión se comporta de manera diferente en diferentes escenarios.
Notas importantes sobre la sincronización multijugador
Aunque desde una perspectiva en primera persona No puedes ver tu propio modelo de decoración (porque el [equipo] local está desactivado), el juego sigue siendo Sincronizar su estado a través de la red. Esto significa que mientras usted Manejar correctamente la lógica de sincronización multijugador, otros jugadores todavía pueden ver los cambios y movimientos de su modelo de decoración.
Por lo tanto, incluso si el script local no se puede ejecutar debido a que [RIG] está deshabilitado, todavía se puede ejecutar mediante Administrador global o mecanismo de sincronización de red, permite Todos los jugadores para ver Cambios en su modelo de decoración. Esto es para Decoración interactiva.
Puntos clave a considerar al implementar la lógica de comportamiento del modelo:
- Política de montaje de scripts -Considere el uso de un gestor global o un sistema de eventos como alternativa
- La diferencia entre los roles de escena y los roles de menú -Algunos scripts pueden funcionar solo en un contexto específico
- Problema de sincronización multijugador -Asegurar un comportamiento consistente entre los clientes web
- Estado de activación del componente -Los componentes de los objetos de juego desactivados no ejecutan el método Update/FixedUpdate
- Gestión de recursos -Inicializar y limpiar los recursos correctamente para evitar fugas de memoria
- Autoridad de la red -Considerar qué acciones deben realizarse localmente y cuáles requieren sincronización de red
A partir de la versión 1.2.4, MoreHead proporciona una interfaz API pública para ampliar la funcionalidad. Estas interfaces permiten a los desarrolladores cargar programáticamente recursos AssetBundle, inyectar scripts personalizados y mejorar la funcionalidad de los adornos.
Lo siguiente esGerente de tocadosInterfaces públicas disponibles en la clase:
| Metodología | Descripción |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assembly) |
Carga todos los incrustados en el ensamblaje especificado. hhhRecursos |
Recrear () |
Actualiza la interfaz de usuario para mostrar las decoraciones recién cargadas |
GetDecorationsFromAssembly(ensamblaje de la asamblea) |
Devuelve una lista de todos los adornos cargados desde el ensamblaje especificado |
GetDecorationGameObjectsFromAssembly(ensamblaje de asamblea) |
Devuelve una lista de todas las preformas de GameObject cargadas desde el ensamblaje especificado |
GetDecorationByName (ensamblaje de ensamblaje, cadena decorationName) |
Encuentre adornos específicos en un ensamblaje especificado por nombre |
FindDecorationsByPartialName (ensamblaje de ensamblaje, cadena Nombre parcial) |
Buscar decoraciones que contengan el nombre de la sección especificada |
Hay dos formas principales de aprovechar la API de MoreHead para la extensión de funcionalidad:
Puede colocar AssetBundle (. hhh) El archivo se incrusta directamente en la DLL como un recurso incrustado:
Archivo añadido a tu proyecto//Cargue todos los recursos. hhh incrustados de su ensamblaje Assembly assembly = Assembly.GetExecutingAssembly (); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(ensamblaje); MoreHead.HeadDecorationManager.RecreateUI ();
Atención: Incrustar recursos en una DLL no es una operación obligatoria. También puede utilizar el método estándar de MoreHead para cargar local
. hhhArchivos, solo use su DLL para inyectar scripts e implementar funciones.
Puede escribir scripts para acceder y modificar los ornamentos, ya sean cargados desde su archivo DLL u otra fuente:
Utilizar BepInEx Utilizando BepInEx.Logging Utilización del sistema. reflexión; Uso de UnityEngine Trabajar con System.Collections.Generic namespace MyCustomDecorations {[BepInPlugin("com.yourname.customdecorations","Decoración personalizada MOD","1.0.0 ") ] [BepInDependency("Mhz.REPOMoreHead ", BepInDependency.DependencyFlags.HardDependency)] Clase pública CustomDecorationsPlugin: BaseUnityPlugin {public static CustomDecorationsPlugin Instance {get; private set;} Private ManualLogSource_Logger; private const string TARGET_MODEL_NAME="Cigar Cigar"; //Nombre del modelo de destino private void Awake () {Instance = this; _Logger = Logger; _logger.LogInfo("MOD de decoración personalizado cargado ");//Carga el decorador y configure el script de procesamiento LoadDecorations ();} private void LoadDecorations () {try {//Obtiene el ensamblaje actual assembly assembly = assembly.GetExecutingAssembly ();//Carga todos los recursos. hhh en la DLL actual MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); //Reconstruir la interfaz de usuario para mostrar el modelo recién cargado MoreHead.HeadDecorationManager.RecreateUI (); //Encuentra una lista de modelos específicos que coincida con el nombre de destino<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly, TARGET_MODEL_NAME); if(targetDecorations.Count>0) {_logger.LogInfo($"{targetDecorations.Count} se encontró un modelo que coincide con '{TARGET_MODEL_NAME}' ");//Añadir un componente foreach (var decoration in targetDecorations)para cada modelo objetivo encontrado {if(decoration.Prefab!=null &&decoration.Prefab.GetComponent<SpaceKeyHandler>() ==null) {_logger.LogInfo($"Añadir SpaceKeyHandler para {decoration.DisplayName} "); decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}} catch(System.Exception ex) {_logger.LogError($"Error al procesar decoración: {ex.Message}");}}//Clase para manejar el comportamiento de la decoración public class SpaceKeyHandler: MonoBehaviour {// Registro de registro al inicializar el componente Instance._logger.LogInfo ($"SpaceKeyHandler inicializado en {gameObject.name});}}}} {// Detección de barra espaciadora presionada directamente en el componente if(Input.GetKeyDown(KeyCode.Space)) {// Simple registro de mensaje al activar Instance._logger.LogInfo ($"Barra espaciadora presionada en el decoración: {gameObject.name}");}
⚠ ️ Consejos importantes
El script no tiene que estar vinculado al modelo correspondiente y puede procesarse bajo demanda para mejorar la funcionalidad. Por ejemplo, el código de muestra anterior solo se puede utilizar enCuando se muestra un personaje en el menúEl registro de salida en respuesta al espacio.
¿Por qué sucede esto?
Porque el juego está enPerspectiva en primera personaLos roles locales serán
El objeto de juego se establece enEstado inactivo(SetActivo(falso))。
[Plataforma de perforación]Es el objeto principal que contiene el modelo de rol,Los modelos decorativos de MoreHead también están montados bajo este nivel。- 当
Cuando está deshabilitado, según el mecanismo de funcionamiento de Unity, suComponentes de todos los objetos secundarios的Actualización、Reparar actualizacionesEnfoque de ciclo de vida equivalenteNo será llamado。- Los modelos decorativos personalizados también se colocan en
[Plataforma de perforación]Bajo el nivel jerárquico, por lo que cuando monta scripts directamente en el modelo, una vez que entra en la perspectiva de primera persona, estos scripts se desactivan porque el objeto padre está deshabilitadoNo se puede ejecutar correctamente。- Y en el juegoInterfaz de menúEn, el modelo de rol siempre se mantieneEstado de activaciónEn este momento, el script montado en la decoración funciona correctamente porque Unity solo ejecutará los métodos de componentes en el objeto de juego de estado activado.
Este tipo deDiferencias en los estados de activaciónEs un punto clave que explica por qué el mismo script se comporta de manera inconsistente en diferentes escenarios.
Notas importantes sobre la sincronización multijugador
Aunque desde una perspectiva en primera personaNo puedes ver tus propios modelos decorativos(porque el [RIG] local está deshabilitado), pero el juego seguirá siendoSincronizar su estado en la red。 Esto significa que mientras ustedManejar correctamente la lógica de sincronización multijugador, otros jugadores todavía pueden ver los cambios y movimientos de su modelo decorado.
Por lo tanto, incluso si el script local no se ejecuta debido a que [RIG] está deshabilitado, todavía puede usarAdministrador global o mecanismo de sincronización de redPara lograr efectos interactivos y permitir queVisible para todos los jugadoresLos cambios que ocurren en su modelo de decoración. Esto creaDecoración interactivaOfrece posibilidades.
Al implementar la lógica de comportamiento del modelo, debe prestar atención a los siguientes puntos:
- Política de montaje de scripts -Considere métodos alternativos como el uso de un gestor global o un sistema de eventos
- La diferencia entre los roles de escena y los roles de menú -Algunos scripts pueden funcionar solo en un contexto específico
- Problema de sincronización multijugador -Asegurar un comportamiento consistente entre los clientes de la red
- Estado de activación del componente -Los componentes de los objetos de juego desactivados no ejecutan el método Update/FixedUpdate
- Gestión de recursos -Inicializar y limpiar los recursos correctamente para evitar fugas de memoria
- Permisos de red -Considerar qué acciones deben realizarse localmente y cuáles requieren sincronización de red
Más sombreros
Captura de pantalla de la decoración de la selección auxiliar (Ninguna garantía)
Más sombreros
Proporcionar capturas de pantalla para las decoraciones para una fácil selección (Sin garantía)
Mosaico Mosaico:
Yuriscat Calypso Calypso, el gato de Yuri:Bilibili
Para preguntas y sugerencias, envíe preguntas:
Si tiene preguntas y sugerencias, envíe Issues:Problemas de GitHub
¿Quieres apoyarnos con café y cristales de energía amarillos?
¿Quieres invitarnos a tomar un café y comprar cristales de energía amarillos?
Haz una donación en Hi-Fi
Whisper, ¡estamos haciendo un juego indie!
Por un lado, ¡estamos haciendo juegos indie!

Descargar Mods Ahora
Instala LagoFast, inicia R.E.P.O. y juega con los mods que te encantan.