• 產品
  • 遊戲
  • 特點
  • 定價
  • 下載
  • 博客
  • 聯盟夥伴

莫爾黑德

作者:YMC_MHZ最後更新:2025-08-06 08:42:5310.4M2.1MB

R.E.P.O. 莫爾黑德-1-lagofast 模組大師

模組介紹

可定製的化妝品。 簡單好玩的裝飾模組,提供unitypackage,供玩家自行導入模型。

所有模型都是由Yuri的貓Calypso創建的,專門為這個mod:3
所有的模型由尤里的貓·卡里普索為了這個模組而製作:3

Introduction簡介

一個簡單有趣的裝飾mod,提供了一個 供玩家導入自定義模型。
目前,只有少數裝飾可用,但計劃進行更多更新。
尼克毛菜單 mod是先決條件。
如果您遇到力量損失問題,請下載 固定強度 模式。

簡單好玩的裝飾模組,提供 unitypackage,供玩家導入自定義模型。
目前僅有少量裝飾,未來會持續更新。
需安裝 尼克毛菜單 前置模組。
如果遇到力量丟失問題,請下載 固定強度 模組。


*截圖中的雞嘴來自 EvenMoreHead.

如何使用 如何使用

  1. 安裝此mod 並進入遊戲。
  2. 您可以找到 左下角的“MoreHead”按鈕 要麼 在大廳里 or 進入關卡后 (按 ).
  3. 點擊按鈕切換化妝品。

  1. 安裝本模組,進入遊戲。
  2. 在大廳準備階段正式進入關卡后按 電調,都能在左下角找到 "MoreHead"按鈕
  3. 點擊按鈕切換化妝品。








⚠ ️ 兼容性聲明 兼容性說明 ⚠ ️

點擊查看 點擊展開

更新至 2.1.3, 莫爾黑德 必須更新為 1.3.0 或者以後才能正常工作。

⚠ ️ 如果您仍在使用 莫爾黑德1.2.8 或更早,請保持 梅努利布2.1.1 或更早以避免兼容性問題。

為了獲得最佳體驗和穩定性,我們建議始終使用最新版本。


已更新至 2.1.3,因此 莫爾黑德 需升級至 1.3.0 或更高版本才能正常運行。

⚠ ️ 如果您仍在使用 莫爾黑德1.2.8 或更早版本,請確保 梅努利布 仍為 2.1.1 或更早版本,否則可能會出現兼容性問題。

為確保最佳體驗和穩定性,建議始終使用最新版本。


Previously:之前的版本

1.2.8+
1.0.3 1.1.8+ 必填。

梅努利布 2.0.0 →需要 莫爾黑德 1.2.8+
梅努利布 1.0.3 →需要 莫爾黑德 1.1.8+ 版本。



配置選項 配置選項

點擊查看 點擊展開

英語

MoreHead提供了幾個可以在BepInEx配置文件中修改的配置選項(BepInEx/config/Mhz.REPOMoreHead.cfg):

UI設置

選項
EscButtonPosX X Morehead按鈕在ESC菜單中的位置 0
EscButtonPosY y Morehead按鈕在ESC菜單中的位置 0
大廳按鈕POSX X Morehead按鈕在大廳中的位置 0
大堂按鈕 y Morehead按鈕在大廳中的位置 0

調整這些值允許您在MoreHead按鈕與其他mod UI元素衝突時重新定位它們。

黑名單模式

選項 說明 默認值
黑名單模式 設置為“ENABLE_BLACKLIST”以啟用黑名單功能 “”(禁用)

啟用黑名單模式時:

  • 按住Shift鍵並單擊 在裝飾按鈕上添加/刪除黑名單中的項目
  • 使用 Shift+全部清除 一次清除整個黑名單
  • ⚠ ️ 所有黑名單更改在重啟遊戲后生效

列入黑名單的裝飾品不會出現在你的裝飾品菜單中,這對於隱藏你不想使用的物品很有用。

💡 建議一個玩家管理黑名單,並通過mod代碼或 BepInEx/config/MoreHeadBlacklist.json 文件,以確保多人遊戲中的外觀同步。
💡 在共享之前,請確保禁用黑名單模式(清除配置值),以防止其他玩家意外更改。

伐木

選項 默認值
EnableVerboseLogging 為模型加載啟用詳細日誌 假的

啟用此選項可以查看有關模型加載過程的更詳細日誌,有助於故障排除。

文件位置

文件 路徑 說明
MoreHeadConfig.json 存儲裝飾狀態的主配置文件
MoreHeadOutfits.json [Unity.persistentDataPath]/REPOModData/MoreHead/ 最多可存儲5套裝備配置
Mhz.REPOMoreHead.cfg 帶有UI定位和其他設置的BepInEx配置文件
MoreHeadBlacklist.json BepInEx/config/ 用於隱藏不需要的裝飾的黑名單文件
裝飾(.hhh文件) BepInEx/插件/ or
BepInEx/插件/莫爾黑德/裝飾/
定製裝飾模型

附注: [Unity.persistentDataPath] 通常解析為:

  • Windows: C:/Users/[YourName]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/庫/應用支持/semiwork/Repo/

文件描述

  • MoreHeadConfig.json:存儲每個裝飾的啟用/禁用狀態(單個裝備模式-用於向后兼容)
  • MoreHeadOutfits.json:存儲多達5種不同的裝飾配置,您可以使用UI或功能鍵F1-F5進行切換
  • Mhz.REPOMoreHead.cfg:包含UI按鈕位置、黑名單模式切換和日誌選項的設置
  • MoreHeadBlacklist.json:包含應該從UI菜單中隱藏的裝飾名稱列表(需要啟用黑名單模式)
  • 裝飾.hhh文件:包含裝飾的3D模型的資產包,可以放置在任一位置

中文

MoreHead提供了幾個配置選項,可以在BepInEx配置文件中修改(BepInEx/config/Mhz.REPOMoreHead.cfg):

UI設置

選項 描述 默認值
EscButtonPosX ESC菜單中MoreHead按鈕的X坐標 0
EscButtonPosY ESC菜單中MoreHead按鈕的Y坐標 0
大廳按鈕POSX 大廳中MoreHead按鈕的X坐標 0
大堂按鈕 大廳中MoreHead按鈕的Y坐標 0

調整這些值可以重新定位MoreHead按鈕,避免與其他模組的UI元素衝突。

黑名單模式

選項 描述 默認值
黑名單模式 設置為"ENABLE_BLACKLIST"以啟用黑名單功能 ""(禁用)

啟用黑名單模式后:

  • 移位 +點擊 化妝品按鈕來添加/移除黑名單項目
  • 使用 Shift+全部清除 可一次性清空所有黑名單條目
  • ⚠ ️ 所有黑名單相關操作需重啟遊戲后才會生效

被列入黑名單的化妝品不會出現在您的裝飾菜單中,這對於隱藏您不想使用的物品很有用。

💡 推薦由一名玩家維護黑名單,通過分享模組代碼或直接發送 BepInEx/config/MoreHeadBlacklist.json 文件,以保證多人遊戲時外觀同步。
💡 分享前請務必關閉黑名單模式(清空配置項字符串),以避免其他玩家誤觸導致數據不同步。

日誌記錄

選項 描述 默認值
EnableVerboseLogging 啟用模型加載的詳細日誌 假的

啟用此選項可以查看更詳細的模型加載過程日誌,有助於故障排除。

文件位置

文件 路徑 描述
MoreHeadConfig.json 主配置文件,存儲裝飾狀態
更多headoutfits.json [Unity.persistentDataPath]/REPOModData/MoreHead/ 存儲最多5套裝備配置
Mhz.REPOMoreHead.cfg BepInEx配置文件,包含UI定位和其他設置
MoreHeadBlacklist.json BepInEx/config/ 黑名單文件,用於隱藏不需要的裝飾
裝飾文件(.hhh文件) BepInEx/插件/
BepInEx/插件/莫爾黑德/裝飾/
自定義裝飾模型

注意: [Unity.persistentDataPath] 通常對應於:

  • Windows: C:/Users/[您的用戶名]/AppData/LocalLow/semiwork/Repo/
  • Linux: ~/.config/unity3d/semiwork/Repo/
  • Mac: ~/庫/應用支持/semiwork/Repo/

文件說明

  • MoreHeadConfig.json:存儲每個裝飾的啟用/禁用狀態(單套裝備模式-用於向后兼容)
  • MoreHeadOutfits.json:存儲最多5種不同的裝飾配置,可以通過UI或功能鍵F1-F5切換
  • Mhz.REPOMoreHead.cfg:包含UI按鈕位置、黑名單模式開關和日誌選項的設置
  • MoreHeadBlacklist.json:包含應在UI菜單中隱藏的裝飾名稱列表(需要啟用黑名單模式)
  • 裝飾.hhh文件:包含裝飾3D模型的Asset Bundle,可以放置在任一位置



如何添加模型 如何添加模型

點擊查看 點擊展開

英語教程

  1. 設置Unity (2022.3*推薦,遊戲使用內置渲染管道,請注意對應的模型材質),導入 MoreHead-Asset-Pack_v1.3.unitypackage.

    📥 下載unitypackage

  2. 導入您的模型拖動 玩家頭像 預製到場景中.

    確保您的模型與Unity兼容,並在製作動畫時正確裝配。

  3. 找到以下零件玩家頭像,將放置模型的位置:

    Name 說明 標籤
    頭部裝飾(不要移動) 說話時抬起的頭部
    頸部裝飾(不要移動) 下巴/胸部區域 頸部
    車身裝飾(請勿移動) 身體 身體
    臀部裝飾(不要移動) 臀部/下半身區域 臀部
    L形臂裝飾(不要移動) 左臂 左臂
    R臂裝飾(不要移動) 右臂 右臂
    L腿裝飾(不要移動) 左腿 左腿
    R腿裝飾(不要移動) 右腿 右腿
    世界裝飾(不要動) 跟隨字符位置,但保持水平方向

    ⚠ ️ 這些位置是錨點參考。 不要修改坐標,否則你的模型會在遊戲中錯位。
    💡 The 世界 標記對於無論角色移動如何都應該保持水平方向的裝飾很有用。
    💡 與肢體相關的標籤(左臂、右臂、左腿、右腿)可以在遊戲中的“肢體”主標籤下一起查看。

  4. 在目標零件(簡稱A)下創建一個空對象,並將其命名為.

    這個名字將作為你的裝飾的名字在遊戲中顯示。

  5. 將模型放入A中並調整到合適的位置.

  6. 將A拖到 項目 用於創建預設的窗口.

    ⚠ ️ 注意:請避免將對撞機組件添加到裝飾模型中,因為它們可能會影響角色物理,導致旋轉問題或不穩定的運動。 對於碰撞相互作用,考慮替代技術。

  7. 運行 工具→頭部裝飾生成器,將您的A prefab(或更多,支持批量導出)拖到腳本面板,從步驟3中選擇相應的部分,然後 點擊 將模型添加到列表.

    確保選擇正確的身體部位(頭部/頸部/身體/臀部等。)與你放置裝飾品的地方相匹配。

  8. 點擊 構建所有AssetBundle,然後找到 【您的裝修名稱】.hhh 中的文件 資產捆綁 文件夾。

    只有 .hhh 安裝需要文件。 其他生成的文件可以忽略。

  9. 移動 文件到 BepInEx\插件 (遊戲會加載plugins文件夾中的所有.hhh文件。如果你不確定放在哪裡,你可以把它放在 \MoreHead\裝飾品 以便更好地組織)。

    ⚠ ️ 對於多人遊戲可見性:您和您的朋友必須具有相同的 安裝文件以查看正確的裝飾。
    ⚠ ️ 請勿包裝 MoreHead.dll 文件到您的Mod中,只有 .hhh 文件和這個模塊是享受裝飾所必需的。

  10. 開始遊戲並享受!

    在遊戲中按ESC鍵,在左下角找到“MoreHead”來訪問你的新裝飾。

中文教程

  1. 部署Unity(推薦2022.3*版本,遊戲使用的是內置渲染管線,請注意對應的模型材質),導入 MoreHead-Asset-Pack_v1.3.unitypackage

    📥 下載unitypackage

  2. 導入模型,並將 預製體拖入場景

    確保您的模型與Unity兼容,如果有動畫需要正確綁定骨骼。

  3. 找到 玩家頭像 中的以下部位,對應模型將會擺放的位置

    名稱 描述 標籤
    頭部裝飾(不要移動) 說話時會上抬的頭部
    頸部裝飾(不要移動) 下巴/胸口 頸部
    車身裝飾(請勿移動) 身體 身體
    臀部裝飾(不要移動) 臀部/下半身 臀部
    L形臂裝飾(不要移動) 左手臂 左臂
    R臂裝飾(不要移動) 右手臂 右臂
    L腿裝飾(不要移動) 左腿 左腿
    R腿裝飾(不要移動) 右腿 右腿
    世界裝飾(不要動) 跟隨角色位置移動但保持水平方向

    ⚠ ️ 這些位置是坐標錨點參考。 請勿修改坐標,否則您的模型在遊戲中會錯位。
    💡 世界 標籤適用於需要保持水平方向的裝飾品,無論角色如何移動。
    💡 四肢相關標籤(leftarm、rightarm、leftleg、rightleg)可在遊戲中通過"LIMBS"主標籤統一查看。

  4. 在目標部位下創建一個空對象(稱為A),並命名

    此名稱將在遊戲中顯示為您的裝飾品名稱。

  5. 將模型放入A,並調整到合適位置

  6. 拖動A到項目窗口,創建預製體

    ⚠ ️ 提示:裝飾模型上請勿添加碰撞體組件。 碰撞體可能影響角色物理行為,導致旋轉異常或動作不穩定。 如需碰撞交互,請考慮使用其他技術實現。

  7. 運行工具→頭部裝飾生成器,拖入A預製體(或更多,支持批量導出),並選擇第3步中對應的部位,隨後將模型添加到列表

    確保選擇正確的身體部位(頭部/頸部/身體/臀部等),與您放置裝飾的位置相匹配。

  8. 點擊構建所有AssetBundle,然後在資產捆綁文件夾中找到[你的裝飾品名].hhh文件。

    安裝時只需要文件,其他生成的文件可以忽略。

  9. 文件移動至BepInEx\插件(啟動遊戲會加載plugins下所有的.hhh文件。如果不知道往哪放,可以放入\MoreHead\裝飾品便於管理)。

    ⚠ ️ 多人遊戲可見性:您和您的朋友必須安裝相同的.hhh文件才能互相看到正確的裝飾。
    ⚠ ️ 不要打包MoreHead.dll文件到您的Mod中,只需.hhh文件和該mod就能暢玩飾品。

  10. 啟動遊戲,享受裝飾!

    在遊戲中按ESC,在左下角找到"MoreHead"即可訪問您的新裝飾。



Developer API&Extension開發者API與擴展

點擊查看 點擊展開

英文文檔


從1.2.4版本開始,MoreHead提供了用於擴展的公共API。 這些接口允許開發人員以編程方式加載AssetBundle資源,注入自定義腳本,並增強裝飾功能。

公共API

以下公共接口可在 頭飾經理 類別:

方法 說明
LoadExternalAssetBundlesFromAssembly(Assembly) 全部加載 .hhh 指定程序集中嵌入的資源
重新創建() 刷新UI以顯示新加載的裝飾
GetDecorationsFromAssembly(Assembly assembly) 返回從指定程序集中加載的所有裝飾的列表
GetDecorationGameObjectsFromAssembly(Assembly assembly) 返回從指定程序集中加載的GameObject預設列表
GetDecorationByName(程序集程序集,字符串decorationName) 從指定程序集中按名稱查找特定裝飾
FindDecorationsByPartialName(程序集程序集,字符串partialName) 搜索包含指定部分名稱的裝飾

集成方法

有兩種主要方法可以利用MoreHead的API來擴展功能:

1.將AssetBundles作為資源嵌入

您可以嵌入AssetBundle()文件作為嵌入資源直接到您的DLL中:

  1. 按照“如何添加模型”一節中概述的標準過程創建AssetBundles
  2. 在Visual Studio(或首選IDE)中:
    • 添加 項目中的文件
    • 將他們的“構建操作”設置為“嵌入資源”
  3. 在插件的初始化代碼中:
    //從您的程序集裝入所有嵌入的.hhh資源Assembly assembly.getExecutingAssembly(); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); MoreHead.HeadDecorationManager.RecreateUI();
    

附注:將資源嵌入到DLL中不是強制性的。 您還可以使用MoreHead的標準方法來加載本地 .hhh 文件,並簡單地使用您的DLL進行腳本注入和功能實現。


2.程序化腳本注入

您可以編寫訪問和修改裝飾的腳本,無論它們是從DLL還是其他來源加載的:

  1. 使用提供的API訪問裝飾預製件
  2. 添加自定義組件/腳本以增強功能
  3. 實現自己的裝飾行為邏輯

實施例

使用BepInEx 使用BepInEx.Logging 使用系統。反射; 使用UnityEngine 使用System.Collections.Generic 命名空間MyCustomDecorations{[BepInPlugin("com.yourname.customdecorations","Custom Decorations Mod","1.0.0")][BepInDependency("Mhz.REPOMoreHead", BepInDependency.DependencyFlags.HardDependency)]公共類CustomDecorationsPlugin:BaseUnityPlugin{public static CustomDecorationsPlugin實例{get;private set;}Private ManualLogSource_Logger;private const string TARGET_MODEL_NAME="Cigar";private const string("Private Model); _logger.LogInfo("自定義裝飾Mod loaded"); //加載裝飾並設置處理程序LoadDecorations(); }private void LoadDecorations(){try{//獲取當前程序集Assembly Assembly.getExecutingAssembly();//從當前DLL加載所有.hhh資源MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(Assembly);//重新創建UI以顯示新加載的模型MoreHead.HeadDecorationManager.RecreateUI();//查找與目標名稱列表匹配的特定模型<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly,TARGET_MODEL_NAME); if(targetDecorations.Count>0){_logger.LogInfo($"found{targetDecorations.Count}models匹配'{TARGET_MODEL_NAME}'");//將組件添加到每個找到的目標模型foreach(targetDecorations中的var decoration){if(decoration.Prefab!=null&&decoration.Prefab.GetComponent<SpaceKeyHandler>()==null){_logger.LogInfo($"將SpaceKeyHandler添加到{decoration.DisplayName}");decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}}catch(System.Exception ex){_logger.LogError($"Error processing decorations:{ex.Message}");}}//用於處理裝飾行為的類公共類SpaceKeyHandler:MonoBehaviour{private void Awake(){//當組件初始化時記錄Instance._logger.LogInfo($"SpaceKeyHandler initialized on{gameObject.name}");}private void Update();如果(Input.GetKeyDown(KeyCode.Space);如果(Input.GetKeyDown(KeyCode.Space));如果($"SpaceKeyHandler:{"裝飾時按空格鍵:{gameObject.name}");如果觸發時按下消息Instance._Logger.Name}");如果($"裝飾時按下空格鍵:{//只需記錄消息Instance._Logger.Name}");觸發時按下的空格鍵:{//只需記錄消息Instance._Logger.Name);觸發時按下的空格鍵:}}}

⚠ ️ 重要注意事項

腳本不一定需要附加到相應的模型——根據需要實現它們以獲得正確的功能。 例如,上面的示例代碼僅在菜單中顯示字符時響應空格鍵按下。

為什麼會出現這種情況?

因為在第一人稱視角下,遊戲設置本地角色的 [鑽機] 遊戲對象 非活動 (SetActive(假)).

  • 是包含角色模型的父對象,並且 莫爾黑德裝飾也安裝在此層次結構下.
  • 什麼時候 根據Unity的機制, 子對象的所有組件 不會有他們的 更新, 修復更新 和其他生命周期方法 .
  • 定製裝飾模型也被放置在 [鑽機] 層次結構,因此當您將腳本直接附加到模型時,一旦進入第一人稱視圖,這些腳本 無法正常執行 因為父對象被禁用。
  • 然而,在遊戲中 菜單界面,角色模型始終保持 活躍的,因此附加在裝飾上的腳本可以正常工作,因為Unity只在活動的GameObjects上執行組件方法。

這個 激活狀態差異 是解釋為什麼同一個腳本在不同場景中表現不同的關鍵點。

關於多人同步的重要注意事項

雖然在第一人稱視角下 看不到自己的裝修模型 (因為本地【裝備】被禁用),遊戲仍然 通過網絡同步您的狀態.這意味着只要你 正確處理多人同步邏輯,其他玩家仍然可以看到你的裝修模型的變化和動作。

因此,即使由於[RIG]被禁用而導致本地腳本無法執行,您仍然可以通過 全局管理器或網絡同步機制,允許 要查看的所有玩家 對您的裝飾模型的更改。 這為 互動裝飾.

模型行為邏輯實現時的考慮要點:

  1. 腳本掛載策略 -考慮使用全局管理器或事件系統作為替代方案
  2. 場景角色和菜單角色的區別 -某些腳本可能僅在特定上下文中工作
  3. 多人同步問題 -確保網絡客戶端之間的行為一致
  4. 組件激活狀態 -禁用的遊戲對象上的組件不會執行Update/FixedUpdate方法
  5. 資源管理 -正確初始化和清理資源,避免內存泄漏
  6. 網絡權威 -考慮哪些操作應該在本地執行,哪些需要網絡同步

中文文檔


從1.2.4版本開始,MoreHead提供了公開API接口,用於擴展功能。 這些接口允許開發者以編程方式加載AssetBundle資源、注入自定義腳本,並增強裝飾物功能。

公開API接口

以下是頭飾經理類中可用的公共接口:

方法 說明
LoadExternalAssetBundlesFromAssembly(Assembly) 加載指定程序集中嵌入的所有.hhh資源
重新創建() 刷新UI以顯示新加載的裝飾物
GetDecorationsFromAssembly(Assembly assembly) 返回從指定程序集加載的所有裝飾物列表
GetDecorationGameObjectsFromAssembly(Assembly assembly) 返回從指定程序集加載的所有GameObject預製體列表
GetDecorationByName(程序集程序集,字符串decorationName) 根據名稱查找指定程序集中的特定裝飾物
FindDecorationsByPartialName(程序集程序集,字符串partialName) 搜索包含指定部分名稱的裝飾物

集成方法

有兩種主要方式利用MoreHead的API進行功能擴展:

1.將AssetBundle作為資源嵌入

您可以將AssetBundle(.hhh)文件直接嵌入到DLL中作為嵌入式資源:

  1. 按照"如何添加模型"部分的標準流程創建AssetBundle
  2. 在Visual Studio(或您選擇的IDE)中:
    • 文件添加到您的項目
    • 將它們的"生成操作"設置為"嵌入式資源"
  3. 在您的插件初始化代碼中:
    //從您的程序集加載所有嵌入的.hhh資源Assembly assembly=Assembly.GetExecutingAssembly(); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); MoreHead.HeadDecorationManager.RecreateUI();
    

注意:將資源嵌入到DLL中不是必須操作。 您也可以使用MoreHead的標準方法加載本地.hhh文件,只用您的DLL注入腳本和實現功能。


2.程序化腳本注入

您可以編寫腳本訪問和修改裝飾物,無論它們是從您的DLL還是其他來源加載的:

  1. 使用提供的API訪問裝飾物預製體
  2. 添加自定義組件/腳本以增強功能
  3. 實現您自己的裝飾物行為邏輯

實現示例

使用BepInEx 使用BepInEx.Logging 使用系統。反射; 使用UnityEngine 使用System.Collections.Generic namespace MyCustomDecorations{[BepInPlugin("com.yourname.customdecorations","自定義裝飾MOD","1.0.0") ][BepInDependency("Mhz.REPOMoreHead", BepInDependency.DependencyFlags.HardDependency)]公共類CustomDecorationsPlugin:BaseUnityPlugin{public static CustomDecorationsPlugin Instance{get;private set;}Private ManualLogSource_Logger;private const string TARGET_MODEL_NAME="Cigar雪茄"; //目標模型名稱private void Awake(){Instance=this;_logger=Logger;_logger.LogInfo("自定義裝飾MOD已加載");//加載裝飾物並設置處理腳本LoadDecorations();}private void LoadDecorations(){try{//獲取當前程序集Assembly assembly=Assembly.GetExecutingAssembly();//加載當前DLL中的所有.hhh資源MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); //重建UI以顯示新加載的模型MoreHead.HeadDecorationManager.RecreateUI(); //查找匹配目標名稱的特定模型List<MoreHead.DecorationInfo>targetDecorations=MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly,TARGET_MODEL_NAME); if(targetDecorations.Count>0){_logger.LogInfo($"找到{targetDecorations.Count}一個匹配'{TARGET_MODEL_NAME}'的模型");//為每個找到的目標模型添加組件foreach(var decoration in targetDecorations){if(decoration.Prefab!=null&&decoration.Prefab.GetComponent<SpaceKeyHandler>()==null){_logger.LogInfo($"為{decoration.DisplayName}添加SpaceKeyHandler");decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}}}catch(System.Exception ex){_logger.LogError($"處理裝飾物時出錯:{ex.Message}");}}//用於處理裝飾物行為的類public class SpaceKeyHandler:MonoBehaviour{private void Awake(){//組件初始化時記錄日誌Instance._logger.LogInfo($"在{gameObject.name}上初始化了SpaceKeyHandler");}private void Update(){//直接在組件中檢測空格鍵按下if(Input.GetKeyDown(KeyCode.Space)){//觸發時簡單記錄消息Instance._logger.LogInfo($"空格鍵在裝飾物上按下:{gameObject.name}");}

⚠ ️ 重要提示

腳本不一定非要綁定在對應模型上,按需處理才能完善功能。 例如上面的示例代碼,只能在菜單里顯示角色時響應空格輸出日誌。

為什麼會這樣?

因為遊戲在第一人稱視角下會將本地角色的遊戲對象設為非激活狀態SetActive(假))。

  • [鑽機]是包含角色模型的父級對象,MoreHead的裝飾模型也被掛載在這個層級下
  • 被禁用時,根據Unity的工作機制,其下所有子對象的組件更新修復更新等生命周期方法都不會被調用
  • 自定義裝飾模型同樣放置在[鑽機]層級下,因此當您在模型上直接掛載腳本時,一旦進入第一人稱視角,這些腳本就會因為父對象被禁用而無法正常執行
  • 而在遊戲菜單界面中,角色模型始終保持激活狀態,此時掛載在裝飾上的腳本可以正常工作,這是因為Unity只會執行激活狀態遊戲對象上的組件方法。

這種激活狀態的差異是關鍵點,它解釋了為什麼同樣的腳本在不同場景下表現不一致。

關於多人同步的重要說明

雖然在第一人稱視角下您看不到自己的裝飾模型(因為本地[RIG]被禁用),但遊戲依然會在網絡中同步您的狀態。 這意味着只要您正確處理多人同步邏輯,其他玩家仍然可以看到您裝飾模型的變化和動作。

因此,即使本地腳本因[RIG]禁用而不執行,您仍然可以通過全局管理器或網絡同步機制來實現交互效果,讓所有玩家都能看到您的裝飾模型發生的變化。 這為創造交互式裝飾提供了可能性。

實現模型行為邏輯時需要注意以下幾點:

  1. 腳本掛載策略 -考慮使用全局管理器或事件系統等替代方法
  2. 場景角色和菜單角色的區別 -某些腳本可能只在特定上下文中工作
  3. 多人同步問題 -確保在網絡客戶端間行為一致
  4. 組件激活狀態 -禁用的遊戲對象上的組件不會執行Update/FixedUpdate方法
  5. 資源管理 -正確初始化和清理資源,避免內存泄漏
  6. 網絡權限 -考慮哪些操作應該在本地執行,哪些需要網絡同步



未來更新計劃 未來更新計劃

  • 更多帽子

  • 輔助選擇的裝飾截圖 (不保證)

  • 更多的帽子

  • 為裝飾物提供截圖,方便選擇 (不保證)



作者信息 作者信息

馬賽克 馬賽克了:
尤里斯卡特·卡利普索 尤里的貓·卡里普索:嗶哩嗶哩

如有疑問和建議,請提交問題:
如有問題和建議,請提交Issues:GitHub問題

想用咖啡和黃色能量水晶支持我們嗎?
想請我們喝咖啡和購買黃色能量水晶?
在高保真上捐款

竊竊私語,我們正在製作一款獨立遊戲!
悄悄說一句,我們正在製作獨立遊戲!

本工具由三方[bufftool]提供注意圖標

立即下载模组

安裝 LagoFast,啟動 R.E.P.O. 並暢玩你喜愛的模組。