Morehead

Autor:YMC_MHZÚltima actualización:2025-08-06 08:42:5310.4M2.1MB

R.E.P.O. Morehead-1-Maestro de modificaciones de Lagofast

Introducción al mod

Cosméticos personalizables. Un módulo decorativo simple y divertido que proporciona un paquete de unidad para que los jugadores puedan importar modelos ellos mismos.

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

Introducción Introducción

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.

Cómo utilizar Cómo utilizar

  1. Instalar este mod Y entrar en el juego.
  2. Usted puede encontrar Botón "Más cabeza" en la esquina inferior izquierda O bien En el pasillo O Después de ingresar al nivel (presionado ).
  3. Haga clic en el botón para cambiar de cosméticos.

  1. Instale este módulo, entra en el juego.
  2. En la etapa de preparación del salónDespués de ingresar oficialmente al nivel, presione ESC, se puede encontrar en la esquina inferior izquierda Botón "Más cabeza"
  3. Haga clic en el botón para cambiar de cosméticos.








⚠ ️ Declaración de compatibilidad Instrucciones de compatibilidad ⚠ ️

Haga clic para ver Haga clic para expandir

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.8 O antes, por favor mantenga Menulib En 2.1.1 O 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.8 O versiones anteriores, asegúrese de Menulib Sigue siendo 2.1.1 O 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.


Previous: versión anterior

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.



Opciones de configuración Opciones de configuración

Haga clic para ver Haga clic para expandir

Inglés

MoreHead ofrece varias opciones de configuración que se pueden modificar en el archivo de configuración de BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):

Configuración de interfaz de usuario

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.

Modo lista negra

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ón
  • Uso de Shift+Borrar todo Limpiar toda la lista negra a la vez
  • ⚠ ️ Todos los cambios en la lista negra entran en vigor después de reiniciar el juego

Las 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.json Archivos 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.

Tala madera

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.

Ubicación del archivo

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/ O
BepInEx/Plugins/Morehead/Decoración/
Modelos decorativos personalizados

Notas: [Unity.persistentDataPath] Normalmente se resuelve como:

  • Windows: C:/Usuarios/[Su Nombre]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/biblioteca/soporte de aplicación/semiwork/Repo/

Descripción del archivo

  • MásHeadConfig.json: Almacena el estado activado/desactivado de cada decoración (modo de equipamiento único-para compatibilidad hacia atrás)
  • MásCabezaOutfits.json: Almacena hasta 5 configuraciones de decoración diferentes, puedes cambiar utilizando la interfaz de usuario o las teclas de función F1-F5
  • Mhz.REPOMoreHead.cfg: Contiene la configuración de la ubicación del botón de la UI, el cambio del modo de lista negra y las opciones de registro
  • MásCabezaBlacklist.json: Contiene una lista de nombres de decoración que deben ocultarse del menú de la interfaz de usuario (se requiere habilitar el modo de lista negra)
  • Archivo decorado. hhh: Paquete de activos que contiene modelos 3D decorativos, que se pueden colocar en cualquier lugar

Chino

MoreHead ofrece varias opciones de configuración que se pueden modificar en el archivo de configuración de BepInEx (BepInEx/config/Mhz.REPOMoreHead.cfg):

Configuración de interfaz de usuario

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.

Modo lista negra

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 negra
  • Uso de Shift+Borrar todo Puede borrar todas las entradas de la lista negra a la vez
  • ⚠ ️ Todas las operaciones relacionadas con la lista negra solo entrarán en vigor después de reiniciar el juego

Los 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.json Archivo 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.

Logging

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.

Ubicación del archivo

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:

  • Windows: C:/Usuarios/[tu nombre de usuario]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/biblioteca/soporte de aplicación/semiwork/Repo/

Descripción de los documentos

  • MásHeadConfig.json: Almacena el estado activado/desactivado de cada decoración (modo equipo único-para compatibilidad hacia atrás)
  • MásCabezaOutfits.json: Almacena hasta 5 configuraciones de decoración diferentes, que se pueden cambiar a través de la interfaz de usuario o las teclas de función F1-F5
  • Mhz.REPOMoreHead.cfg: Contiene la configuración de la ubicación del botón de la UI, el interruptor del modo de lista negra y las opciones de registro
  • MásCabezaBlacklist.json: Contiene una lista de nombres de decoración que deben ocultarse en el menú de la interfaz de usuario (es necesario habilitar el modo de lista negra)
  • Archivo decorado. hhh: Paquete de activos que contiene modelos 3D decorativos, que se pueden colocar en cualquier lugar



Cómo añadir un modelo Cómo añadir un modelo

Haga clic para ver Haga clic para expandir

Tutoriales de inglés

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

    📥 Descargar unitypackage

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

  3. 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.
    💡 El Mundiales Los 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".

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

  5. Poner el modelo en A y ajustarlo a la posición adecuada.

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

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

  8. Haga clic Construir todos los paquetes de activos, entonces encontrar 【Nombre de tu decoración】.hhh Archivos en Empaquetamiento de activos Carpeta.

    Solamente . hhh Se requieren archivos para la instalación. Otros archivos generados pueden ser ignorados.

  9. 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 EMPAQUE MásHead.dll Archivos en su Mod, solo . hhh El archivo y este módulo son necesarios para disfrutar de la decoración.

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

Tutorial chino

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

    📥 Descargar unitypackage

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

  3. 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.
    💡 Mundiales Las 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".

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

  5. Coloque el modelo en A y ajuste a la posición adecuada

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

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

  8. 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ónArchivos, otros archivos generados se pueden ignorar.

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

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



API y extensiones para desarrolladores API y extensiones para desarrolladores

Haga clic para ver Haga clic para expandir

Documentación en inglés


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.

API pública

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

Enfoque integrado

Hay dos formas principales de aprovechar la API de MoreHead para ampliar la funcionalidad:

1. Incrustar AssetBundles como recursos

Puede incrustar un AssetBundle () como un recurso incrustado directamente en su DLL:

  1. Cree AssetBundles siguiendo el procedimiento estándar descrito en la sección "Cómo agregar un modelo"
  2. En Visual Studio (o IDE preferido):
    • Añadir Documentos en el proyecto
    • Establezca su "Acción de construcción" en "Recursos incrustados"
  3. En el código de inicialización del plugin:
    //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 . hhh Archivos y simplemente use su DLL para la inyección de scripts y la implementación de funciones.


2. Inyección de scripts programáticos

Puede escribir scripts para acceder y modificar las decoraciones, ya sean cargadas desde una DLL u otra fuente:

  1. Acceso a las prefabricadas decorativas utilizando la API proporcionada
  2. Añadir componentes/scripts personalizados para mejorar la funcionalidad
  3. Implementar su propia lógica de comportamiento decorativo

Ejemplos de realización

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á ellos Actualización, Reparar actualizaciones Y 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:

  1. Política de montaje de scripts -Considere el uso de un gestor global o un sistema de eventos como alternativa
  2. La diferencia entre los roles de escena y los roles de menú -Algunos scripts pueden funcionar solo en un contexto específico
  3. Problema de sincronización multijugador -Asegurar un comportamiento consistente entre los clientes web
  4. Estado de activación del componente -Los componentes de los objetos de juego desactivados no ejecutan el método Update/FixedUpdate
  5. Gestión de recursos -Inicializar y limpiar los recursos correctamente para evitar fugas de memoria
  6. Autoridad de la red -Considerar qué acciones deben realizarse localmente y cuáles requieren sincronización de red

Documentación en chino


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.

Interfaz API pública

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

Enfoque integrado

Hay dos formas principales de aprovechar la API de MoreHead para la extensión de funcionalidad:

1. Incruste AssetBundle como recurso

Puede colocar AssetBundle (. hhh) El archivo se incrusta directamente en la DLL como un recurso incrustado:

  1. Cree un AssetBundle siguiendo el proceso estándar en la sección "Cómo agregar un modelo"
  2. En Visual Studio (o el IDE de su elección):
    • Archivo añadido a tu proyecto
    • Establezca su "Acción de compilación" en "Recursos integrados"
  3. En su código de inicialización del plugin:
    //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.


2. Inyección de scripts programáticos

Puede escribir scripts para acceder y modificar los ornamentos, ya sean cargados desde su archivo DLL u otra fuente:

  1. Acceda a las prefabricadas de ornamentos utilizando la API proporcionada
  2. Añadir componentes/scripts personalizados para mejorar la funcionalidad
  3. Implemente su propia lógica de comportamiento decorativo

EJEMPLOS DE IMPLEMENTACIÓN

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ánEl objeto de juego se establece enEstado inactivoSetActivo(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 secundariosActualizaciónReparar 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:

  1. Política de montaje de scripts -Considere métodos alternativos como el uso de un gestor global o un sistema de eventos
  2. La diferencia entre los roles de escena y los roles de menú -Algunos scripts pueden funcionar solo en un contexto específico
  3. Problema de sincronización multijugador -Asegurar un comportamiento consistente entre los clientes de la red
  4. Estado de activación del componente -Los componentes de los objetos de juego desactivados no ejecutan el método Update/FixedUpdate
  5. Gestión de recursos -Inicializar y limpiar los recursos correctamente para evitar fugas de memoria
  6. Permisos de red -Considerar qué acciones deben realizarse localmente y cuáles requieren sincronización de red



Futuros planes de actualización Futuros planes de actualización

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



INFORMACIÓN AUTOR INFORMACIÓN AUTOR

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!

Esta herramienta es proporcionada por terceros [bufftool]Icono de atención

Descargar Mods Ahora

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