feat: 添加了受击反馈mod chore: 优化了隐藏角色的代码

This commit is contained in:
m0_75251201
2025-11-02 11:43:21 +08:00
parent 2af09007f9
commit 2b7943339c
48 changed files with 253 additions and 36 deletions

View File

@@ -15,9 +15,12 @@
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Mods\HideCharacter</OutputPath>
<!-- 禁用生成 deps.json 文件 -->
<GenerateDependencyFile>false</GenerateDependencyFile>
<!-- 禁用生成 .pdb 调试符号文件 -->
<DebugType>none</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Mods\HideCharacter</OutputPath>
<GenerateDependencyFile>false</GenerateDependencyFile>
<DebugType>none</DebugType>
</PropertyGroup>

View File

@@ -15,8 +15,6 @@ namespace HideCharacter
public HideList? hideList = new HideList();
public bool hide { get; private set; } = false;
private List<Renderer> rendererList = new List<Renderer>();
private bool needRefresh = true;
private GameObject?
bodyPartObject,
tail,
@@ -38,8 +36,8 @@ namespace HideCharacter
private void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
LevelManager.OnLevelInitialized+=OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnloaded;
var dllDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configFilePath = Path.Combine(dllDirectory, "config.json");
@@ -84,25 +82,56 @@ namespace HideCharacter
private void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
LevelManager.OnLevelInitialized-=OnSceneLoaded;
SceneManager.sceneUnloaded -= OnSceneUnloaded;
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
private void OnSceneLoaded()
{
rendererList.Clear();
hide = false;
var obj = GameObject.Find("ModelRoot");
if (!obj) return;
//角色的模型是最先加载的,就直接先查找了,避免找到其他实体的身体
bodyPartObject = GameObject.Find("Pelvis");
healthBar = GameObject.Find("HealthBars");
needRefresh = true;
//身体的SkinnedMeshRenderer如果不隐藏会发现身体无法恢复
foreach (var skinnedMeshRenderer in obj.GetComponentsInChildren<SkinnedMeshRenderer>())
{
rendererList.Add(skinnedMeshRenderer);
}
Refresh();
}
private void OnSceneUnloaded(Scene scene)
{
hide = false;
SetCharacterHide(false);
}
public void Refresh()
{
tail = null;
eye = null;
eyebrow = null;
mouth = null;
hair = null;
armLeft = null;
armRight = null;
thighLeft = null;
thighRight = null;
weapon = null;
healthBar = null;
helmet = null;
glasses = null;
headTip = null;
armor = null;
backpack = null;
if (bodyPartObject != null)
FindChildObjectsRecursively(bodyPartObject.transform);
}
/// <summary>
/// 查找身体部件不使用对Meshderer的隐藏是因为测试的时候发现没有正确隐藏
/// 可能是测试逻辑错了,就先这样写了
@@ -187,13 +216,6 @@ namespace HideCharacter
{
if (hideList != null)
{
//使用懒刷新是因为发现在开始查找的时候会找不到眼睛和眉毛,可能是还没有创建,就改为在切换时刷新了
if (needRefresh)
{
if (bodyPartObject != null)
FindChildObjectsRecursively(bodyPartObject.transform);
needRefresh=false;
}
tail?.SetActive(!(hide && hideList.hideTail));
eye?.SetActive(!(hide && hideList.hideEyes));
eyebrow?.SetActive(!(hide && hideList.hideEyebrow));

View File

@@ -10,7 +10,8 @@ namespace HideCharacter
var manage = ModBehaviour.hideHideCharacterManager;
if (manage!=null)
{
manage.SetCharacterHide(manage.hide);
if(manage.hide)
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+5cec8711ddabae774b7b55087269b881165af0e7")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+2af09007f967b42ac04776167f814297d14582e3")]
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]

View File

@@ -1 +1 @@
3d62d92adb7f9a12cf46bc278adfa279e7b9149f58da50080fcbc57375d7389a
7182d425771de7b27f8f319b51a9341c4aa1ff6099af2487fa0a697a586e5ebb

View File

@@ -1,6 +1,6 @@
is_global = true
build_property.RootNamespace = HideCharacter
build_property.ProjectDir = d:\vs_project\DuckovMods\HideCharacter\
build_property.ProjectDir = D:\vs_project\DuckovMods\HideCharacter\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.CsWinRTUseWindowsUIXamlProjections = false

View File

@@ -1 +1 @@
550877d5c7f8c3d392c8fe9197974700440e729c966f37ad9d800284f2a8a83b
bfbf8f24eac374a808530bfd826b4ac67fd68b16390e779378456c151d4baf40

View File

@@ -18,6 +18,5 @@ D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.GeneratedMSBuildE
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.AssemblyInfoInputs.cache
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.AssemblyInfo.cs
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.csproj.CoreCompileInputs.cache
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.sourcelink.json
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.dll
D:\vs_project\DuckovMods\HideCharacter\obj\Debug\HideCharacter.pdb
D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Mods\HideCharacter\HideCharacter.dll

View File

@@ -1 +0,0 @@
{"documents":{"D:\\vs_project\\DuckovMods\\*":"https://raw.githubusercontent.com/thisMiniBox/DuckovMods/4f144bef9a53a82ec1d3853545c53fd70357c810/*"}}

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+5cec8711ddabae774b7b55087269b881165af0e7")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+2af09007f967b42ac04776167f814297d14582e3")]
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]

View File

@@ -1 +1 @@
ee5e91bf3a8d718914859649bac466f7260515b7c2ac316863334e9e783b2fee
a90e2d9f75649545c1c6af7e34c572d4df6020158a0438630a9add7fb701918c