
저자:YMC_MHZ마지막 업데이트:2025-08-06 08:42:5310.4M2.1MB
모든 모델은 유리의 고양이 칼립소에 의해 만들어졌습니다. 특히 이 모드를 위해 만들어졌습니다.
모든 모델은유리의 고양이 칼립소이 모드를 위해 만들었습니다: 3

간단하고 재미있는 장식 모드를 제공합니다. 플레이어가 사용자 정의 모델을 가져올 수 있습니다.
현재 몇 가지 장식만이 사용할 수 있지만 더 많은 업데이트가 계획되어 있습니다.
Nick Mao 메뉴 mod는 전제조건으로 필요합니다.
실력 손실 문제가 발생하면 다운로드하십시오. 고정 강도 패턴.
간단하고 재미있는 장식 모듈, 제공 단위 패키지사용자 정의 모델을 가져올 수 있습니다.
현재로서는 약간의 장식만이 있으며 앞으로 계속 업데이트될 것이다.
설치 필요 Nick Mao 메뉴 전면 모듈.
힘의 손실 문제가 발생하면 다운로드 고정 강도 모듈.
* 스크린샷의 닭고기 부리는 EvenMoreHead.
).전기 조정, 왼쪽 하단에서 찾을 수 있습니다 "MoreHead" 버튼。


및 업데이트 2.1.3, 모어헤드 업데이트되어야 합니다. 1.3.0 또는 이후에 제대로 작동합니다.
⚠ 이메일: 만약 여러분이 아직 사용하고 있다면
모어헤드 1.2.8또는 이전에, 유지하십시오.메누리브에서2.1.1호환성 문제를 피하기 위해 이전에 사용합니다.
최고의 경험과 안정성을 위해 항상 최신 버전을 사용하는 것이 좋습니다.
로 업데이트됨 2.1.3, 따라서 모어헤드 로 업그레이드 필요 1.3.0 또는 그 이상의 버전이 제대로 작동합니다.
⚠ 이메일: 여전히 사용 중인 경우
모어헤드 1.2.8또는 이전 버전, 확인하십시오메누리브여전히2.1.1또는 이전 버전이거나 호환성 문제가 발생할 수 있습니다.
최상의 경험과 안정성을 보장하기 위해 항상 최신 버전을 사용하는 것이 좋습니다.
→ 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):
| 옵션 | ||
|---|---|---|
| EscButtonPosX | esc 메뉴의 morehead 버튼의 x 위치 | 0 |
| 에스커버튼포스Y | esc 메뉴의 more head 버튼의 y 위치 | 0 |
| 로비 버튼 포스 | 로비의 모어헤드 버튼의 x 위치 | 0 |
| 로비 버튼 | 로비의 모어헤드 버튼 y 위치 | 0 |
이러한 값을 조정하면 다른 mod ui 요소와 충돌하는 경우 morehead 버튼의 위치를 재배치할 수 있습니다.
| 옵션 | 설명 | 기본 |
|---|---|---|
| 블랙리스트 모드 | 블랙리스트 기능을 활성화하려면 "ENABLE_BLACKLIST"로 설정합니다. | "" (비활성화) |
블랙리스트 모드가 활성화되면 다음과 같습니다.
Shift + 클릭 블랙리스트에서 항목을 추가/제거할 수 있는 장식 버튼이동 + 모든 삭제 블랙리스트 전체를 한 번에 삭제합니다.블랙리스트에 있는 장식품은 장식 메뉴에 나타나지 않으며, 사용하지 않는 항목을 숨기는 데 유용합니다.
💡 한 플레이어가 블랙리스트를 관리하고 모드 코드나
BepInEx/config/MoreHeadBlacklist.json파일을 사용하여 멀티플레이어에서 모양이 동기화되도록 합니다.
💡 공유하기 전에 다른 플레이어의 뜻밖의 변경을 방지하기 위해 블랙리스트 모드를 비활성화하십시오 (구성 값을 지우십시오).
| 옵션 | 기본 | |
|---|---|---|
| 기록을 활성화합니다. | 모델 로드를 위한 상세 로그를 활성화합니다. | 거짓 |
이 옵션을 설정하면 모델 로드 프로세스에 대한 자세한 로그를 볼 수 있으므로 문제 해결에 도움이 됩니다.
| 파일 | 경로 | 설명 |
|---|---|---|
| 더 많은 headconfig.json | |
장식 상태를 저장하는 주 구성 파일 |
| 더 많은 헤드 outfits.json | [Unity.persistentDataPath] /REPOModData/MoreHead/ |
최대 5세트의 의상 구성 저장 |
| Mhz.REPOMoreHead.cfg | |
ui 포지셔닝 및 기타 설정을 포함한 bepinex 구성 파일 |
| 더 헤드 블랙리스트.json | BepInEx/config/ |
원치 않는 장식물을 숨기는 블랙리스트 파일 |
| 장식(.hhh 파일) | BepInEx/플러그인/ 또는BepInEx/plugins/MoreHead/Decorations/ |
맞춤형 인테리어 모델 |
주석: [Unity.persistentDataPath] 일반적으로 다음과 같이 해결됩니다.
C:/Users/[YourName]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/라이브러리/애플리케이션 지원/반작업/리포/MoreHead는 BepInEx 구성 파일에서 수정할 수 있는 여러 구성 옵션을 제공합니다.BepInEx/config/Mhz.REPOMoreHead.cfg):
| 옵션 | 설명 | 기본값 |
|---|---|---|
| EscButtonPosX | ESC 메뉴의 MoreHead 버튼의 X 좌표 | 0 |
| 에스커버튼포스Y | ESC 메뉴의 MoreHead 버튼의 Y 좌표 | 0 |
| 로비 버튼 포스 | 로비의 MoreHead 버튼의 X 좌표 | 0 |
| 로비 버튼 | 로비의 MoreHead 버튼의 Y 좌표 | 0 |
이러한 값을 조정하면 MoreHead 버튼의 위치를 재배치하여 다른 모듈의 UI 요소와 충돌하지 않도록 할 수 있습니다.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 블랙리스트 모드 | 블랙리스트 기능을 활성화하려면 "ENABLE_BLACKLIST"로 설정합니다 | "" (사용 안 함) |
블랙리스트 모드가 활성화된 경우:
이동 + 클릭 블랙리스트 항목을 추가/제거하기 위한 화장품 버튼이동 + 모든 삭제 모든 블랙리스트 항목을 한꺼번에 비우기 가능블랙리스트에 올라온 화장품은 장식 메뉴에 나타나지 않아 사용하기 싫은 물건을 숨기는 데 유용하다.
💡 추천 한 플레이어가 블랙리스트를 유지하고, 모드 코드를 공유하거나 직접 보내는 것을 통해
BepInEx/config/MoreHeadBlacklist.json멀티플레이어 게임에서 모양이 동기화되도록 파일을 사용합니다.
💡 다른 플레이어가 실수로 터치하여 데이터가 동기화되지 않도록 공유하기 전에 반드시 블랙리스트 모드(구성 항목 문자열을 비우기)를 끄십시오.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 기록을 활성화합니다. | 모델 로드에 대한 세부 로그 활성화 | 거짓 |
이 옵션을 설정하면 더 자세한 모델 로드 프로세스 로그를 볼 수 있으므로 문제 해결에 도움이 됩니다.
| 파일 | 경로 | 설명 |
|---|---|---|
| 더 많은 headconfig.json | |
마스터 프로파일, 장식 상태 저장 |
| 더 많은 헤드 outfits.json | [Unity.persistentDataPath] /REPOModData/MoreHead/ |
최대 5개의 장비 구성 저장 |
| Mhz.REPOMoreHead.cfg | |
UI 위치 및 기타 설정이 포함된 BepInEx 구성 파일 |
| 더 헤드 블랙리스트.json | BepInEx/config/ |
불필요한 장식을 숨기는 블랙리스트 파일 |
| 장식 파일(.hhh 파일) | BepInEx/플러그인/ 或BepInEx/plugins/MoreHead/Decorations/ |
사용자 정의 장식 모델 |
주의: [Unity.persistentDataPath] 일반적으로 다음과 해당:
C:/Users/[사용자 이름]/AppData/LocalLow/semiwork/Repo/~/.config/unity3d/semiwork/Repo/~/라이브러리/애플리케이션 지원/반작업/리포/단결을 세우다 (2022.3*추천, 게임 내장 렌더링 파이프라인 사용, 해당 모델 재료 주의), 가져오기 MoreHead-Asset-Pack_v1.3.unitypackage.
모델 가져오기 및 끌다 플레이어 아바타 현장에 프리메이드 진입.
모델이 유니티와 호환되고 애니메이션된 경우 제대로 조작되었는지 확인합니다.
다음과 같은 부분을 찾다 에서 플레이어 아바타, 모델이 배치되는 곳:
| 이름 | 설명 | 태그 |
|---|---|---|
| 머리 장식(움직이지 않음) | 말할 때 올라오는 머리 부분 | 머리 |
| 목 장식(움직이지 않음) | 턱/가슴 영역 | 목 |
| 차체 장식(움직이지 않음) | 몸체 | 몸체 |
| 엉덩이 장식(움직이지 않음) | 엉덩이/하체 영역 | 엉덩이 |
| l 팔 장식(움직이지 않음) | 왼쪽 팔 | 왼쪽 팔 |
| r팔 장식(움직이지 않음) | 오른쪽 팔 | 오른쪽 |
| L-다리 장식(움직이지 않음) | 왼쪽 다리 | 왼쪽 다리 |
| r-다리 장식(움직이지 않음) | 오른쪽 다리 | 오른쪽 다리 |
| 세계 인테리어(움직이지 마십시오) | 문자 위치를 따르지만 수평 방향을 유지합니다. | |
⚠ 이메일: 이러한 위치는 앵커 참조입니다. 좌표를 수정하지 마십시오. 그렇지 않으면 모델이 게임 내에서 정렬되지 않습니다.
💡 그만큼세계태그는 문자 이동에 관계없이 수평 방향을 유지해야 하는 장식에 유용합니다.
💡 팔다리와 관련된 태그(왼쪽, 오른쪽, 왼쪽 다리, 오른쪽 다리)는 게임 내에서 '팔다리' 주 태그 아래에서 함께 볼 수 있습니다.
대상 부품 아래에 빈 객체를 만들고 이름을 지정합니다..
이 이름은 게임 내에 인테리어의 이름으로 표시됩니다.
모델을 a 안에 놓고 적절한 위치로 조정합니다..
a로 끌다 프로젝트 프리캐스트를 만드는 창.
⚠ 이메일: 참고: 인테리어 모델에 충돌기 구성요소를 추가하지 마십시오. 이러한 구성요소는 문자 물리학에 영향을 미치고 회전 문제나 불안정한 움직임을 일으킬 수 있기 때문에. 충돌 상호작용의 경우 대체 기술을 고려하십시오.
달리다 도구 → 머리 장식 건축자스크립트 패널로 프리메이크(또는 그 이상의 배치 내보내기가 지원됩니다)를 드래그하고 3단계에서 해당 부품을 선택합니다. 클릭 목록에 모델 추가.
장식을 놓은 곳에 맞는 올바른 신체 부분(머리/목/몸/엉덩이 등)을 선택하십시오.
클릭 모든 자산 번들 구축그리고 위치를 찾습니다. [당신의 인테리어 이름]. hhh 에 있는 파일 자산 묶음 폴더.
오직
. hhh파일을 설치하려면 필요합니다. 생성된 다른 파일은 무시할 수 있습니다.
이동 파일로 BepInEx\ 플러그인 (게임은 플러그인 폴더에 있는 모든. hhh 파일을 로드합니다. 어디에 넣어야 할지 확실하지 않다면 \MoreHead\장식 더 나은 조직을 위해).
⚠ 이메일: 멀티플레이어 가시성: 여러분과 여러분의 친구들은 똑같아야 합니다.
파일을 설치하여 올바른 장식을 확인합니다.
⚠ 이메일: 포장하지 마세요MoreHead.dll파일은 당신의 mod에 들어가고,. hhh파일과 이 모드는 장식을 즐기기 위해 필요합니다.
게임을 시작하고 즐기세요!
게임 내에서 esc 키를 누르고 왼쪽 아래에 'MoreHead'를 찾아 새 장식에 액세스하십시오.
Unity 배포(2022.3* 버전 추천, 게임은 내장된 렌더링 파이프라인을 사용하므로 해당 모델 재질에 주의하십시오), 가져오기 MoreHead-Asset-Pack_v1.3.unitypackage。
모델을 가져오고 프리캐스트를 장면으로 드래그。
골격을 올바르게 바인딩해야 하는 애니메이션이 있으면 모델이 Unity와 호환되는지 확인합니다.
찾기 플레이어 아바타 에서 모델이 배치될 위치에 해당하는:
| 이름 | 설명 | 태그 |
|---|---|---|
| 머리 장식(움직이지 않음) | 말할 때 위로 올라가는 머리 | 머리 |
| 목 장식(움직이지 않음) | 턱/가슴 | 목 |
| 차체 장식(움직이지 않음) | 신체 | 몸체 |
| 엉덩이 장식(움직이지 않음) | 엉덩이/하반신 | 엉덩이 |
| l 팔 장식(움직이지 않음) | 왼쪽 팔 | 왼쪽 팔 |
| r팔 장식(움직이지 않음) | 오른쪽 팔 | 오른쪽 |
| L-다리 장식(움직이지 않음) | 왼쪽 다리 | 왼쪽 다리 |
| r-다리 장식(움직이지 않음) | 오른쪽 다리 | 오른쪽 다리 |
| 세계 인테리어(움직이지 마십시오) | 캐릭터 위치를 따라 이동하지만 수평 방향을 유지하다 | |
⚠ 이메일: 이러한 위치는 좌표 앵커 참조입니다. 좌표를 수정하지 마십시오. 그렇지 않으면 게임 중에 모델이 잘못 배치될 수 있습니다.
💡세계레이블은 캐릭터가 어떻게 움직이든 수평 방향을 유지해야 하는 장식품에 적용됩니다.
💡 팔다리 관련 태그(leftarm, rightarm, leftleg, rightleg)는 게임 내에서 "LIMBS" 메인 태그를 통해 일괄적으로 볼 수 있습니다.
대상 부분 아래에 A라는 빈 객체를 작성하고 이름을 지정합니다。
이 이름은 게임에서 당신의 장식품 이름으로 표시됩니다.
모델을 A에 넣고 적절한 위치에 조정。
A 로 드래그프로젝트창, 프리캐스트 작성。
⚠ 이메일: 팁: 장식 모델에 충돌 구성요소를 추가하지 마십시오. 충돌은 캐릭터의 물리적 동작에 영향을 미쳐 비정상적인 회전이나 불안정한 동작을 유발할 수 있습니다. 충돌 상호 작용을 원하려면 다른 기술 구현을 고려하십시오.
실행도구 → 머리 장식 건축자, A 프리프리캐스트(또는 그 이상의 일괄 내보내기 지원)를 끌고 3단계에서 해당 부분을 선택한 다음목록에 모델 추가。
장식을 배치한 위치에 맞게 올바른 신체 부위(머리/목/몸/엉덩이 등)를 선택하십시오.
클릭모든 자산 번들 구축, 그런 다음자산 묶음폴더에서 찾았습니다[너의 장식품 이름]. hhh파일.
설치 시 필요한 것만
파일, 다른 생성된 파일은 무시할 수 있습니다.
将파일 이동BepInEx\ 플러그인(게임을 시작하면 plugins 아래의 모든. hhh 파일이 로드됩니다. 만약 어디에 넣어야 할지 모르면 넣을 수 있습니다\MoreHead\장식관리하기 쉽습니다).
⚠ 이메일: 멀티플레이어 가시성: 당신과 친구는 동일한 게임을 설치해야 합니다
. hhh서로가 올바른 장식을 볼 수 있도록 파일이 있습니다.
⚠ 이메일: 포장하지 마세요MoreHead.dll당신의 Mod에 파일, 그냥. hhh파일과 이 모드로 액세서리를 즐길 수 있습니다.
게임을 시작하고 장식을 즐기세요!
게임에서 ESC 키를 누르고 왼쪽 아래 모서리에 있는 "MoreHead"를 찾으면 새 장식에 액세스할 수 있습니다.
버전 1.2.4부터 morehead는 확장을 위한 공용 apis를 제공합니다. 이러한 인터페이스를 통해 개발자들은 assetbundle 리소스를 프로그래밍적으로 로드하고, 사용자 스크립트를 주입하며, 장식 기능을 향상시킬 수 있습니다.
다음 공용 인터페이스는 머리 장식 관리자 클래스:
| 방법 | 설명 |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assembly assembly) |
모든 로드 . hhh 지정된 어셈블리에 포함된 리소스 |
다시 만들기 () |
새로 로드된 장식을 표시하려면 UI를 새로 고침 |
GetDecorationsFromAssembly(Assembly assembly) |
지정된 어셈블리에서 로드된 모든 장식의 목록을 반환합니다. |
GetDecorationGameObjectsFromAssembly(Assembly assembly) |
지정된 어셈블리에서 로드된 게임 객체 프리팩의 목록을 반환합니다. |
GetDecorationByName(어셈블리 어셈블리, 문자열 decorationname) |
지정된 어셈블리에서 이름으로 특정 장식을 찾습니다. |
FindDecorationsByPartialName(어셈블리 어셈블리, 문자열 partialname) |
지정된 부분 이름이 포함된 장식을 검색합니다. |
기능을 확장하기 위해 morehead의 API를 활용하는 두 가지 주요 방법이 있습니다.
자산 묶음을 삽입할 수 있습니다.) 파일은 내장된 리소스로 dll에 직접 입력합니다.
프로젝트에 파일//어셈블리 어셈블리 어셈블리 = Assembly.GetExecutingAssembly () 에서 모든 포함된. hhh 리소스를 로드합니다. MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); MoreHead.HeadDecorationManager.RecreateUI ();
주석: DLL에 리소스를 포함하는 것은 필수적이지 않습니다. morehead의 표준 메서드를 사용하여 로컬 로드를 할 수도 있습니다.
. hhh파일 및 단순히 dll을 사용하여 스크립트 주입 및 기능 구현에.
DLL 또는 다른 소스에서 로드되었는지 여부와 관계없이 장식에 액세스하고 수정하는 스크립트를 작성할 수 있습니다.
bepinex를 사용합니다. bepinex.logging 사용 system.reflection 사용 Unityengine 사용 system.collections.generic 사용 namespace MyCustomDecorations {[BepInPlugin("com.yourname.customdecorations "," Custom Decorations Mod "," 1.0.0 ")] [bepindependenty("Mhz.REPOMoreHead", bepindependenty.dependencyflags.harddepenency)] public class CustomDecorationsPlugin:BaseUnityPlugin{public static CustomDecorationsPlugin Instance {get; private set;} private manuallogsource_Logger; private const string TARGET_MODEL_NAME="Cigar ";//Target model name private void Awake () {Instance = this; _Logger = Logger; _logger.LogInfo ("사용자 정의 장식 모드 로드"); //장식을 로드하고 처리기 loaddecorations () 설정; } private void LoadDecorations () {try {//Get current assembly assembly assembly = assembly.GetExecutingAssembly ();//현재 dll morehead.headdecorationmanager.loadexternalassetbundlesfromassembly(assembly)에서 모든. hhh 리소스를 load;//새로 로드된 모델 morehead.headdecorationmanager.recreateui () 을 표시합니다.//대상 이름 목록과 일치하는 특정 모델 찾기<MoreHead.DecorationInfo>targetDecorations = MoreHead.HeadDecorationManager.FindDecorationsByPartialName(assembly, TARGET_MODEL_NAME); if (targetDecorations.Count > 0) {_logger.LogInfo($"Found {targetDecorations.Count} 모델이 '{TARGET_MODEL_NAME}' "일치합니다);// 찾은 각 대상 모델 foreach(targetdecorations의 var decoration) {if (decoration.Prefab! = null & & decoration.Prefab.GetComponent<SpaceKeyHandler>() == null) {_logger.LogInfo($ "{decoration.DisplayName}에 spacekeyhandler 추가"); decoration.Prefab.AddComponent<SpaceKeyHandler>(); }}} catch(System.Exception ex) {_logger.LogError ($"Error processing decorations: {ex.Message} "); }}//decoration behaviour 처리를 위한 class 공개 클래스 spacekeyhandler: MonoBehaviour {private void Awake () {// log 컴포넌트가 초기화된 인스턴스(Input.GetKeyDown(KeyCode.Space));}}}}}}}
⚠ 이메일: 중요한 메모
스크립트를 반드시 해당 모델에 첨부할 필요는 없습니다. 적절한 기능을 위해 필요에 따라 이러한 스크립트를 구현합니다. 예를 들어, 위의 샘플 코드는 메뉴에 문자를 표시할 때 스페이스 키를 누르는 것에만 응답합니다.
왜 이런 일이 일어나고 있을까?
왜냐하면 1인칭 뷰에서 게임은 로컬 캐릭터를 설정하기 때문입니다.
[굴착기]게임 객체로 비활성 (SetActive (false)).
문자 모델을 포함하는 상위 객체입니다. 더 많은 머리 장식도 이 계층 아래에 장착되어 있습니다..- 언제
유니티의 메커니즘에 따르면, 하위 오브젝트의 모든 구성 요소 그들은 없을 것이다업데이트,수정 업데이트및 기타 수명주기 방법 불리다.- 맞춤형 장식 모델도 아래에 놓여 있습니다.
[굴착기]계층이므로 스크립트를 모델에 직접 부착할 때 일단 1인칭 뷰를 입력하면 스크립트가 정상적으로 실행할 수 없습니다. 상위 객체가 비활성화되었기 때문입니다.- 하지만 게임에서는 메뉴 인터페이스캐릭터 모델은 항상 유지됩니다. 활성따라서 unity는 활성 게임 객체에서만 구성 요소 메서드를 실행하기 때문에 장식에 부착된 스크립트가 정상적으로 작동할 수 있습니다.
이거 활성화 상태의 차이 같은 스크립트가 여러 시나리오에서 왜 다르게 행동하는지 설명하는 핵심 포인트입니다.
멀티플레이어 동기화에 관한 중요한 메모
1인칭 보기에도 불구하고 당신은 자신의 장식 모델을 볼 수 없습니다. (로컬 [리그]가 비활성화되었기 때문에) 게임은 여전히 네트워크에서 상태를 동기화합니다.이것은 여러분만 멀티플레이어 동기화 논리를 적절히 처리합니다.다른 플레이어들은 여전히 당신의 인테리어 모델의 변화와 동작을 볼 수 있습니다.
따라서 [RIG]가 비활성화되어 로컬 스크립트가 실행되지 않더라도 대화형 효과를 구현할 수 있습니다. 글로벌 관리자 또는 네트워크 동기화 메커니즘, 허용 모든 플레이어가 볼 수 있습니다. 당신의 인테리어 모델을 변경합니다. 이것은 가능성을 만듭니다. 인터랙티브 장식.
모델 동작 논리를 구현할 때 고려해야 할 점은 다음과 같습니다.
- 스크립트 마운트 전략 -대안으로 글로벌 관리자 또는 이벤트 시스템을 사용하는 것을 고려합니다.
- 장면 캐릭터와 메뉴 캐릭터의 차이 -일부 스크립트는 특정 컨텍스트에서만 작동할 수 있습니다.
- 멀티플레이어 동기화 문제 -네트워크 클라이언트에서 일관된 동작을 보장합니다.
- 구성 요소 활성화 상태 -비활성화된 게임 객체의 구성요소가 update/fixedupdate 메서드를 실행하지 않습니다.
- 자원 관리 -메모리 누출을 방지하기 위해 리소스를 적절히 초기화하고 정리합니다.
- 네트워크 권한 -로컬에서 수행해야 할 작업과 네트워크 동기화가 필요한 작업을 고려합니다.
버전 1.2.4부터 MoreHead는 기능을 확장하기 위해 공개 API 인터페이스를 제공합니다. 이러한 인터페이스는 개발자들이 프로그래밍 방식으로 AssetBundle 리소스를 로드하고, 사용자 정의 스크립트를 주입하며, 장식 기능을 향상시킬 수 있다.
다음은머리 장식 관리자클래스에서 사용할 수 있는 공용 인터페이스:
| 방법 | 설명 |
|---|---|
LoadExternalAssetBundlesFromAssembly(Assembly assembly) |
지정된 어셈블리에 포함된 모든 로드. hhh리소스 |
다시 만들기 () |
새로 로드된 장식품을 표시하기 위해 UI를 새로 고침 |
GetDecorationsFromAssembly(Assembly assembly) |
지정된 어셈블리에서 로드된 모든 장식 목록을 반환합니다 |
GetDecorationGameObjectsFromAssembly(Assembly assembly) |
지정된 어셈블리에서 로드된 모든 GameObject 프리캐스트 목록을 반환합니다 |
GetDecorationByName(어셈블리 어셈블리, 문자열 decorationname) |
이름을 기준으로 지정된 어셈블리에서 특정 장식 찾기 |
FindDecorationsByPartialName(어셈블리 어셈블리, 문자열 partialname) |
지정된 부분 이름이 포함된 장식 검색 |
MoreHead의 API를 활용하여 기능을 확장하는 두 가지 주요 방법이 있습니다.
AssetBundle(를 사용할 수 있습니다). hhh) 파일은 DLL에 직접 임베디드 리소스로 포함됩니다.
프로젝트에 파일 추가//어셈블리에서 포함된 모든. hhh 리소스를 로드하십시오. Assembly assembly = Assembly.GetExecutingAssembly (); MoreHead.HeadDecorationManager.LoadExternalAssetBundlesFromAssembly(assembly); MoreHead.HeadDecorationManager.RecreateUI ();
주의: DLL에 리소스를 포함하는 것은 필수적인 작업이 아닙니다. MoreHead의 표준 방법을 사용하여 로컬 로드도 할 수 있습니다
. hhh파일은 DLL만 사용하여 스크립트를 주입하고 기능을 구현합니다.
DLL 또는 다른 소스에서 로드되든 상관없이 장식에 액세스하고 수정하는 스크립트를 작성할 수 있습니다.
bepinex를 사용합니다. bepinex.logging 사용 system.reflection 사용 Unityengine 사용 system.collections.generic 사용 네임스페이스 mycustomdecorations {[BepInPlugin("com.yourname.customdecorations "," MOD "," 1.0.0 ") ] [bepindependenty("Mhz.REPOMoreHead ", bepindependenty.dependentyflags.harddependenty)]public class 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 (targetdecorations의 var 장식) {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 {// 구성 요소 초기화 시 로그 Instance._logger.LogInfo ($"{gameObject.name}에서 초기화된 SpaceKeyHandler ");} private void Update () {// 구성 요소에서 직접 스페이스바 누를 감지 if(Input.GetKeyDown(KeyCode.Space)) {// 트리거시 간단한 메시지 Instance._logger.LogInfo ($"장식 위에서 스페이스바 누를: {gameObject.name}");}}}}
⚠ 이메일: 중요한 사항
스크립트는 반드시 해당 모델에 바인딩될 필요는 없으며, 필요에 따라 처리해야만 기능을 완성할 수 있다. 예를 들어 위의 샘플 코드는메뉴에 캐릭터가 표시될 때공백에 응답하여 로그를 출력합니다.
왜 이런 일이 일어났을까?
왜냐하면 게임은1인칭 시각다음에는 로컬 캐릭터가
게임 오브젝트를 로 설정비활성 상태(SetActive (false))。
[굴착기]캐릭터 모델을 포함하는 상위 객체입니다.MoreHead의 장식 모델도 이 계층 아래에 마운트됩니다。- 当
비활성화되었을 때, Unity의 작동 메커니즘에 따라, 그 아래모든 하위 객체의 구성 요소的업데이트、수정 업데이트등수명주기 접근 방식호출되지 않을 것입니다。- 사용자 정의 장식 모델도
[굴착기]모델에 직접 스크립트를 마운트하면 1인칭 관점에 들어가면 상위 객체가 비활성화되어 있기 때문에 스크립트가제대로 실행되지 않음。- 그리고 게임에서메뉴 인터페이스에서 캐릭터 모델은 항상활성화 상태이 때 장식에 마운트된 스크립트가 정상적으로 작동하는데, 이는 Unity가 활성화된 상태 게임 객체의 구성 요소 메서드만 실행하기 때문이다.
이런활성화 상태의 차이같은 스크립트가 왜 서로 다른 시나리오에서 일치하지 않는지를 설명하는 핵심 포인트입니다.
다중 사람 동기화에 대한 중요한 사항
일인칭 시각에서는자신의 장식 모델이 보이지 않습니다(로컬 [RIG]가 비활성화되어 있기 때문에), 게임은 여전히네트워크에서 상태 동기화。 즉, 당신이 하는 한멀티플레이어 동기화 논리의 올바른 처리, 다른 플레이어는 여전히 당신의 장식 모델의 변화와 움직임을 볼 수 있습니다.
그래서 로컬 스크립트가 [RIG] 비활성화되어 실행되지 않더라도 여전히 사용할 수 있습니다.글로벌 관리자 또는 네트워크 동기화 메커니즘상호 작용을 실현하고,모든 플레이어가 볼 수 있습니다장식 모델이 변경되었습니다. 이것은 창조에 대한대화형 장식가능성을 제공합니다.
모델 동작 논리를 구현할 때 주의해야 할 점은 다음과 같습니다.
- 스크립트 마운트 정책 -글로벌 매니저 또는 이벤트 시스템 등의 대안 사용 고려
- 장면 캐릭터와 메뉴 캐릭터의 차이 -일부 스크립트는 특정 컨텍스트에서만 작동할 수 있습니다
- 다중 사람 동기화 문제 -네트워크 클라이언트 간의 일관된 동작 보장
- 구성 요소 활성 상태 -비활성화된 게임 객체의 구성 요소는 Update/FixedUpdate 메서드를 실행하지 않습니다
- 자원 관리 -메모리 누출을 방지하기 위해 리소스를 올바르게 초기화하고 정리합니다
- 네트워크 권한 -로컬에서 수행해야 하는 작업과 네트워크 동기화가 필요한 작업을 고려
모자 더 많이
장식을 위한 스크린샷을 보조하여 선택합니다. (보장 없음)
더 많은 모자
편리한 선택을 위해 장식물의 스크린샷 제공 (보증되지 않음)
모자이크 모자이크:
유리스카 칼립소 유리의 고양이 칼립소:빌리빌리
질문과 제안은 질문을 제출하십시오.
질문이나 제안이 있으면 다음과 같은 문서를 제출하세요.github의 문제
커피와 노란색 에너지 결정으로 우리를 지원하고 싶습니까?
우리에게 커피와 노란색 에너지 크리스탈을 사주시겠습니까?
ko-fi에서 기부하다
속삭이고, 우리는 인디 게임을 만들고 있다!
조용히 말하자면, 우리는 인디 게임을 만들고 있다!

지금 모드를 다운로드하세요
LagoFast를 설치하고 R.E.P.O.을(를) 시작한 후 좋아하는 모드로 플레이해 보세요.