fix: 修复隐藏状态下修改装备装备再次显示的bug

This commit is contained in:
m0_75251201
2025-11-01 23:26:25 +08:00
parent 5cec8711dd
commit b3bf4a9252
40 changed files with 364 additions and 26 deletions

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Duckov.Utilities;
using Newtonsoft.Json;
using UnityEngine;
using UnityEngine.SceneManagement;
@@ -12,9 +13,10 @@ namespace HideCharacter
public class HideCharacterComponent : MonoBehaviour
{
public HideList? hideList = new HideList();
private bool hide = false;
public bool hide { get; private set; } = false;
private List<Renderer> rendererList = new List<Renderer>();
private bool needRefresh = true;
private GameObject?
bodyPartObject,
tail,
@@ -27,11 +29,18 @@ namespace HideCharacter
thighLeft,
thighRight,
weapon,
healthBar;
healthBar,
helmet,
headTip,
glasses,
armor,
backpack;
private void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
var dllDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configFilePath = Path.Combine(dllDirectory, "config.json");
if (File.Exists(configFilePath))
@@ -129,6 +138,21 @@ namespace HideCharacter
case "RightHandSocket":
weapon = child.gameObject;
break;
case "HelmatSocket":
helmet= child.gameObject;
break;
case "FaceMaskSocket":
glasses = child.gameObject;
break;
case "HeadTip":
headTip= child.gameObject;
break;
case "ArmorSocket":
armor= child.gameObject;
break;
case "BackpackSocket":
backpack= child.gameObject;
break;
default:
if (child.gameObject.name.Contains("EyePart"))
{
@@ -159,7 +183,7 @@ namespace HideCharacter
}
}
private void SetCharacterHide(bool hide)
public void SetCharacterHide(bool hide)
{
if (hideList != null)
{
@@ -181,8 +205,12 @@ namespace HideCharacter
thighRight?.SetActive(!(hide && hideList.hideThighRight));
weapon?.SetActive(!(hide && hideList.hideWeapon));
healthBar?.SetActive(!(hide && hideList.hideHealthBar));
helmet?.SetActive(!(hide && hideList.hideHelmet));
glasses?.SetActive(!(hide && hideList.hideGlasses));
headTip?.SetActive(!(hide && hideList.hideHeadTip));
armor?.SetActive(!(hide && hideList.hideArmor));
backpack?.SetActive(!(hide && hideList.hideBackpack));
}
foreach (var o in rendererList)

View File

@@ -6,6 +6,9 @@ namespace HideCharacter
{
public KeyCode hotkey = KeyCode.F5;
public bool hideHelmet = true;
public bool hideGlasses = true;
public bool hideHeadTip = true;
public bool hideTail = true;
public bool hideEyes = true;
public bool hideEyebrow = true;
@@ -17,5 +20,9 @@ namespace HideCharacter
public bool hideThighRight = true;
public bool hideWeapon = false;
public bool hideHealthBar = true;
public bool hideArmor = true;
public bool hideBackpack = true;
}
}

View File

@@ -1,4 +1,5 @@

using HarmonyLib;
using UnityEngine;
using Object = UnityEngine.Object; // 确保引入 UnityEngine 命名空间
@@ -6,33 +7,46 @@ namespace HideCharacter
{
public class ModBehaviour : Duckov.Modding.ModBehaviour
{
private GameObject? _hideCharacterManagerGameObject=null;
public static HideCharacterComponent? hideHideCharacterManager=null;
private const string CHILD_GAMEOBJECT_NAME = "HideCharacterManager";
public string MOD_ID = "HideCharacter";
private Harmony _harmony;
protected override void OnAfterSetup()
{
AddHideComponent();
if (_harmony == null)
{
_harmony=new Harmony(MOD_ID);
_harmony.PatchAll();
}
}
protected override void OnBeforeDeactivate()
{
RemoveHideComponent();
if (_harmony != null)
{
_harmony.UnpatchAll(MOD_ID);
_harmony = null;
}
}
private void AddHideComponent()
{
var childTransform = this.transform.Find(CHILD_GAMEOBJECT_NAME);
if (childTransform) return;
_hideCharacterManagerGameObject = new GameObject(CHILD_GAMEOBJECT_NAME);
_hideCharacterManagerGameObject.transform.SetParent(this.transform);
_hideCharacterManagerGameObject.AddComponent<HideCharacterComponent>();
var hideCharacterManagerGameObject = new GameObject(CHILD_GAMEOBJECT_NAME);
hideCharacterManagerGameObject.transform.SetParent(this.transform);
hideHideCharacterManager = hideCharacterManagerGameObject.AddComponent<HideCharacterComponent>();
}
private void RemoveHideComponent()
{
if (_hideCharacterManagerGameObject)
Destroy(_hideCharacterManagerGameObject);
if (hideHideCharacterManager)
Destroy(hideHideCharacterManager?.gameObject);
}
}
}

View File

@@ -0,0 +1,17 @@
using HarmonyLib;
namespace HideCharacter
{
[HarmonyPatch(typeof(CharacterEquipmentController), "ChangeEquipmentModel")]
public class PatchCharacterEquipmentControllerChangeEquipmentModel
{
public static void Postfix(CharacterEquipmentController __instance)
{
var manage = ModBehaviour.hideHideCharacterManager;
if (manage!=null)
{
manage.SetCharacterHide(manage.hide);
}
}
}
}

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+4f144bef9a53a82ec1d3853545c53fd70357c810")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+5cec8711ddabae774b7b55087269b881165af0e7")]
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]

View File

@@ -1 +1 @@
fd76b68be9378d1c667546778ac0bd4b23218f667f0c3786b8ff56c86739a156
3d62d92adb7f9a12cf46bc278adfa279e7b9149f58da50080fcbc57375d7389a

View File

@@ -5,7 +5,7 @@
},
"projects": {
"D:\\vs_project\\DuckovMods\\HideCharacter\\HideCharacter.csproj": {
"version": "1.0.0",
"version": "1.0.1",
"restore": {
"projectUniqueName": "D:\\vs_project\\DuckovMods\\HideCharacter\\HideCharacter.csproj",
"projectName": "HideCharacter",

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+4f144bef9a53a82ec1d3853545c53fd70357c810")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+5cec8711ddabae774b7b55087269b881165af0e7")]
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]

View File

@@ -1 +1 @@
14e029994881d041e839335ca4e71b2faa426461f1264f07e559e0a157e7cb69
ee5e91bf3a8d718914859649bac466f7260515b7c2ac316863334e9e783b2fee

View File

@@ -1 +1 @@
b9443e15139f8eafd545941efac2b184f22ba6bbbc52bcbe6e7426113697aef7
e42d4e2d526b5e9021369ff53676b171dbb78a79de1d260ce81d1d37d0e46cf2

View File

@@ -210,7 +210,7 @@
"D:\\vsShare\\NuGetPackages": {}
},
"project": {
"version": "1.0.0",
"version": "1.0.1",
"restore": {
"projectUniqueName": "D:\\vs_project\\DuckovMods\\HideCharacter\\HideCharacter.csproj",
"projectName": "HideCharacter",

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "BwbcECPUZ84=",
"dgSpecHash": "PGmptqDdy6g=",
"success": true,
"projectFilePath": "D:\\vs_project\\DuckovMods\\HideCharacter\\HideCharacter.csproj",
"expectedPackageFiles": [

View File

@@ -1 +1 @@
17619862901687226
17619928534493660

View File

@@ -1 +1 @@
17619862901687226
17619928534493660