fix: 修复隐藏状态下修改装备装备再次显示的bug
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
fd76b68be9378d1c667546778ac0bd4b23218f667f0c3786b8ff56c86739a156
|
||||
3d62d92adb7f9a12cf46bc278adfa279e7b9149f58da50080fcbc57375d7389a
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
14e029994881d041e839335ca4e71b2faa426461f1264f07e559e0a157e7cb69
|
||||
ee5e91bf3a8d718914859649bac466f7260515b7c2ac316863334e9e783b2fee
|
||||
|
||||
@@ -1 +1 @@
|
||||
b9443e15139f8eafd545941efac2b184f22ba6bbbc52bcbe6e7426113697aef7
|
||||
e42d4e2d526b5e9021369ff53676b171dbb78a79de1d260ce81d1d37d0e46cf2
|
||||
|
||||
Binary file not shown.
@@ -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",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "BwbcECPUZ84=",
|
||||
"dgSpecHash": "PGmptqDdy6g=",
|
||||
"success": true,
|
||||
"projectFilePath": "D:\\vs_project\\DuckovMods\\HideCharacter\\HideCharacter.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -1 +1 @@
|
||||
17619862901687226
|
||||
17619928534493660
|
||||
@@ -1 +1 @@
|
||||
17619862901687226
|
||||
17619928534493660
|
||||
Reference in New Issue
Block a user