From 9b9121897387fa7e2a57d76690a2a9ae848b1705 Mon Sep 17 00:00:00 2001 From: m0_75251201 Date: Sat, 8 Nov 2025 14:03:17 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20=E5=9C=BA=E6=99=AF=E8=A7=86=E5=9B=BEmod?= =?UTF-8?q?=EF=BC=8CUI=E6=A1=86=E6=9E=B6=E6=9B=B4=E6=8D=A2=E6=A0=87?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DuckovMods.sln | 6 + DuckovMods.sln.DotSettings.user | 9 + .../obj/Debug/HideCharacter.AssemblyInfo.cs | 2 +- .../HideCharacter.AssemblyInfoInputs.cache | 2 +- ...deCharacter.csproj.AssemblyReference.cache | Bin 92590 -> 87680 bytes .../obj/Release/HideCharacter.AssemblyInfo.cs | 2 +- .../HideCharacter.AssemblyInfoInputs.cache | 2 +- ...deCharacter.csproj.AssemblyReference.cache | Bin 92590 -> 87680 bytes .../obj/rider.project.model.nuget.info | 2 +- .../obj/Debug/HitFeedback.AssemblyInfo.cs | 2 +- .../HitFeedback.AssemblyInfoInputs.cache | 2 +- ...HitFeedback.csproj.AssemblyReference.cache | Bin 91219 -> 85518 bytes .../obj/Release/HitFeedback.AssemblyInfo.cs | 2 +- .../HitFeedback.AssemblyInfoInputs.cache | 2 +- ...HitFeedback.csproj.AssemblyReference.cache | Bin 120473 -> 85518 bytes .../obj/rider.project.model.nuget.info | 2 +- MyMainMenu/GameMainTitle.cs | 66 +++ MyMainMenu/ImageLoader.cs | 67 +++ MyMainMenu/ModBehaviour.cs | 40 ++ MyMainMenu/MyMainMenu.csproj | 25 + .../obj/MyMainMenu.csproj.nuget.dgspec.json | 79 +++ .../obj/MyMainMenu.csproj.nuget.g.props | 16 + .../obj/MyMainMenu.csproj.nuget.g.targets | 2 + ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + .../obj/Release/MyMainMenu.AssemblyInfo.cs | 22 + .../MyMainMenu.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 8 + .../obj/Release/MyMainMenu.assets.cache | Bin 0 -> 750 bytes .../MyMainMenu.csproj.AssemblyReference.cache | Bin 0 -> 85853 bytes .../MyMainMenu.csproj.CoreCompileInputs.cache | 1 + .../MyMainMenu.csproj.FileListAbsolute.txt | 7 + MyMainMenu/obj/Release/MyMainMenu.dll | Bin 0 -> 8704 bytes ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + .../netstandard2.1/MyMainMenu.AssemblyInfo.cs | 22 + .../MyMainMenu.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 8 + .../netstandard2.1/MyMainMenu.assets.cache | Bin 0 -> 182 bytes MyMainMenu/obj/project.assets.json | 239 ++++++++++ MyMainMenu/obj/project.nuget.cache | 12 + MyMainMenu/obj/project.packagespec.json | 1 + MyMainMenu/obj/rider.project.model.nuget.info | 1 + MyMainMenu/obj/rider.project.restore.info | 1 + .../obj/Debug/SceneSnapshot.AssemblyInfo.cs | 2 +- .../SceneSnapshot.AssemblyInfoInputs.cache | 2 +- ...eneSnapshot.csproj.AssemblyReference.cache | Bin 93187 -> 87486 bytes .../obj/Release/SceneSnapshot.AssemblyInfo.cs | 2 +- .../SceneSnapshot.AssemblyInfoInputs.cache | 2 +- ...eneSnapshot.csproj.AssemblyReference.cache | Bin 93187 -> 87486 bytes .../obj/rider.project.model.nuget.info | 2 +- SceneView/CanvasControl.cs | 60 +++ SceneView/ControlUtilities.cs | 432 +++++++++++++++++ SceneView/FontUtilities.cs | 67 +++ SceneView/ModBehaviour.cs | 56 +++ SceneView/PatchGameObjectStart.cs | 14 + SceneView/PatchObjectDestroy.cs | 15 + SceneView/SceneView.csproj | 25 + SceneView/SceneViewPanel.cs | 220 +++++++++ SceneView/TreeViewNode.cs | 450 ++++++++++++++++++ ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + SceneView/obj/Debug/SceneView.AssemblyInfo.cs | 22 + .../Debug/SceneView.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 8 + SceneView/obj/Debug/SceneView.assets.cache | Bin 0 -> 750 bytes .../SceneView.csproj.AssemblyReference.cache | Bin 0 -> 31776 bytes ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + .../obj/Release/SceneView.AssemblyInfo.cs | 22 + .../SceneView.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 8 + SceneView/obj/Release/SceneView.assets.cache | Bin 0 -> 750 bytes .../SceneView.csproj.AssemblyReference.cache | Bin 0 -> 85853 bytes .../SceneView.csproj.CoreCompileInputs.cache | 1 + .../SceneView.csproj.FileListAbsolute.txt | 7 + SceneView/obj/Release/SceneView.dll | Bin 0 -> 26624 bytes ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + .../netstandard2.1/SceneView.AssemblyInfo.cs | 22 + .../SceneView.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 8 + .../netstandard2.1/SceneView.assets.cache | Bin 0 -> 182 bytes .../obj/SceneView.csproj.nuget.dgspec.json | 79 +++ SceneView/obj/SceneView.csproj.nuget.g.props | 16 + .../obj/SceneView.csproj.nuget.g.targets | 2 + SceneView/obj/project.assets.json | 239 ++++++++++ SceneView/obj/project.nuget.cache | 12 + SceneView/obj/project.packagespec.json | 1 + SceneView/obj/rider.project.model.nuget.info | 1 + SceneView/obj/rider.project.restore.info | 1 + Theme/obj/Debug/Theme.AssemblyInfo.cs | 2 +- .../obj/Debug/Theme.AssemblyInfoInputs.cache | 2 +- .../Theme.csproj.AssemblyReference.cache | Bin 31535 -> 31535 bytes Theme/obj/Release/Theme.AssemblyInfo.cs | 2 +- .../Release/Theme.AssemblyInfoInputs.cache | 2 +- .../Theme.csproj.AssemblyReference.cache | Bin 91219 -> 85518 bytes Theme/obj/rider.project.model.nuget.info | 2 +- UIFrame/GameOriginMainMenuUI.cs | 99 ++-- UIFrame/ModBehaviour.cs | 8 +- UIFrame/Patch/PatchSceneLoaderLoadMainMenu.cs | 15 - .../PatchSpriteRendererLocalizorRefresh.cs | 34 ++ UIFrame/UIFrame.csproj | 3 + UIFrame/UIFrameAPI.cs | 5 +- UIFrame/UIFrameAPIComponent.cs | 12 +- UIFrame/UIFrameWorker.cs | 63 ++- UIFrame/Utilities/GameObjectTool.cs | 94 ++-- UIFrame/obj/Debug/UIFrame.AssemblyInfo.cs | 2 +- .../Debug/UIFrame.AssemblyInfoInputs.cache | 2 +- UIFrame/obj/Debug/UIFrame.assets.cache | Bin 182 -> 750 bytes .../UIFrame.csproj.AssemblyReference.cache | Bin 31535 -> 32033 bytes UIFrame/obj/Release/UIFrame.AssemblyInfo.cs | 2 +- .../Release/UIFrame.AssemblyInfoInputs.cache | 2 +- .../UIFrame.csproj.AssemblyReference.cache | Bin 120808 -> 92233 bytes .../UIFrame.csproj.CoreCompileInputs.cache | 2 +- .../UIFrame.csproj.FileListAbsolute.txt | 1 + UIFrame/obj/Release/UIFrame.csproj.Up2Date | 0 UIFrame/obj/Release/UIFrame.dll | Bin 11776 -> 13824 bytes UIFrame/obj/rider.project.model.nuget.info | 2 +- 114 files changed, 2654 insertions(+), 177 deletions(-) create mode 100644 MyMainMenu/GameMainTitle.cs create mode 100644 MyMainMenu/ImageLoader.cs create mode 100644 MyMainMenu/ModBehaviour.cs create mode 100644 MyMainMenu/MyMainMenu.csproj create mode 100644 MyMainMenu/obj/MyMainMenu.csproj.nuget.dgspec.json create mode 100644 MyMainMenu/obj/MyMainMenu.csproj.nuget.g.props create mode 100644 MyMainMenu/obj/MyMainMenu.csproj.nuget.g.targets create mode 100644 MyMainMenu/obj/Release/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 MyMainMenu/obj/Release/MyMainMenu.AssemblyInfo.cs create mode 100644 MyMainMenu/obj/Release/MyMainMenu.AssemblyInfoInputs.cache create mode 100644 MyMainMenu/obj/Release/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 MyMainMenu/obj/Release/MyMainMenu.assets.cache create mode 100644 MyMainMenu/obj/Release/MyMainMenu.csproj.AssemblyReference.cache create mode 100644 MyMainMenu/obj/Release/MyMainMenu.csproj.CoreCompileInputs.cache create mode 100644 MyMainMenu/obj/Release/MyMainMenu.csproj.FileListAbsolute.txt create mode 100644 MyMainMenu/obj/Release/MyMainMenu.dll create mode 100644 MyMainMenu/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfo.cs create mode 100644 MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfoInputs.cache create mode 100644 MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.assets.cache create mode 100644 MyMainMenu/obj/project.assets.json create mode 100644 MyMainMenu/obj/project.nuget.cache create mode 100644 MyMainMenu/obj/project.packagespec.json create mode 100644 MyMainMenu/obj/rider.project.model.nuget.info create mode 100644 MyMainMenu/obj/rider.project.restore.info create mode 100644 SceneView/CanvasControl.cs create mode 100644 SceneView/ControlUtilities.cs create mode 100644 SceneView/FontUtilities.cs create mode 100644 SceneView/ModBehaviour.cs create mode 100644 SceneView/PatchGameObjectStart.cs create mode 100644 SceneView/PatchObjectDestroy.cs create mode 100644 SceneView/SceneView.csproj create mode 100644 SceneView/SceneViewPanel.cs create mode 100644 SceneView/TreeViewNode.cs create mode 100644 SceneView/obj/Debug/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 SceneView/obj/Debug/SceneView.AssemblyInfo.cs create mode 100644 SceneView/obj/Debug/SceneView.AssemblyInfoInputs.cache create mode 100644 SceneView/obj/Debug/SceneView.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 SceneView/obj/Debug/SceneView.assets.cache create mode 100644 SceneView/obj/Debug/SceneView.csproj.AssemblyReference.cache create mode 100644 SceneView/obj/Release/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 SceneView/obj/Release/SceneView.AssemblyInfo.cs create mode 100644 SceneView/obj/Release/SceneView.AssemblyInfoInputs.cache create mode 100644 SceneView/obj/Release/SceneView.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 SceneView/obj/Release/SceneView.assets.cache create mode 100644 SceneView/obj/Release/SceneView.csproj.AssemblyReference.cache create mode 100644 SceneView/obj/Release/SceneView.csproj.CoreCompileInputs.cache create mode 100644 SceneView/obj/Release/SceneView.csproj.FileListAbsolute.txt create mode 100644 SceneView/obj/Release/SceneView.dll create mode 100644 SceneView/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 SceneView/obj/Release/netstandard2.1/SceneView.AssemblyInfo.cs create mode 100644 SceneView/obj/Release/netstandard2.1/SceneView.AssemblyInfoInputs.cache create mode 100644 SceneView/obj/Release/netstandard2.1/SceneView.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 SceneView/obj/Release/netstandard2.1/SceneView.assets.cache create mode 100644 SceneView/obj/SceneView.csproj.nuget.dgspec.json create mode 100644 SceneView/obj/SceneView.csproj.nuget.g.props create mode 100644 SceneView/obj/SceneView.csproj.nuget.g.targets create mode 100644 SceneView/obj/project.assets.json create mode 100644 SceneView/obj/project.nuget.cache create mode 100644 SceneView/obj/project.packagespec.json create mode 100644 SceneView/obj/rider.project.model.nuget.info create mode 100644 SceneView/obj/rider.project.restore.info delete mode 100644 UIFrame/Patch/PatchSceneLoaderLoadMainMenu.cs create mode 100644 UIFrame/Patch/PatchSpriteRendererLocalizorRefresh.cs create mode 100644 UIFrame/obj/Release/UIFrame.csproj.Up2Date diff --git a/DuckovMods.sln b/DuckovMods.sln index 56628e3..fa3fd60 100644 --- a/DuckovMods.sln +++ b/DuckovMods.sln @@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UIFrame", "UIFrame\UIFrame. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Theme", "Theme\Theme.csproj", "{7CCF2612-AF15-42F0-B472-8C8F8CAB9B20}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SceneView", "SceneView\SceneView.csproj", "{87AA16B9-C7F9-456E-8F57-CE05F393D91F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {7CCF2612-AF15-42F0-B472-8C8F8CAB9B20}.Debug|Any CPU.Build.0 = Debug|Any CPU {7CCF2612-AF15-42F0-B472-8C8F8CAB9B20}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CCF2612-AF15-42F0-B472-8C8F8CAB9B20}.Release|Any CPU.Build.0 = Release|Any CPU + {87AA16B9-C7F9-456E-8F57-CE05F393D91F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87AA16B9-C7F9-456E-8F57-CE05F393D91F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87AA16B9-C7F9-456E-8F57-CE05F393D91F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87AA16B9-C7F9-456E-8F57-CE05F393D91F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/DuckovMods.sln.DotSettings.user b/DuckovMods.sln.DotSettings.user index 7861586..fb9b486 100644 --- a/DuckovMods.sln.DotSettings.user +++ b/DuckovMods.sln.DotSettings.user @@ -1,8 +1,11 @@  True + True True + True True True + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -18,6 +21,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -25,8 +29,10 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -38,6 +44,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -46,6 +53,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -53,6 +61,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/HideCharacter/obj/Debug/HideCharacter.AssemblyInfo.cs b/HideCharacter/obj/Debug/HideCharacter.AssemblyInfo.cs index f10f434..92c28f4 100644 --- a/HideCharacter/obj/Debug/HideCharacter.AssemblyInfo.cs +++ b/HideCharacter/obj/Debug/HideCharacter.AssemblyInfo.cs @@ -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+0206a83f56b5a794fe2f173b4a047cc4f0d4cd90")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+786025f720c05ae486c8c66d3a6114633ccd0dbf")] [assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")] [assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")] diff --git a/HideCharacter/obj/Debug/HideCharacter.AssemblyInfoInputs.cache b/HideCharacter/obj/Debug/HideCharacter.AssemblyInfoInputs.cache index 6fd36ab..4611129 100644 --- a/HideCharacter/obj/Debug/HideCharacter.AssemblyInfoInputs.cache +++ b/HideCharacter/obj/Debug/HideCharacter.AssemblyInfoInputs.cache @@ -1 +1 @@ -87960f6ca296aa48c51c30197c7d764ab1cc8c1b2d2ae919555af9f2602b2fa1 +5da31913e91a183301e6883819f7ba57fc0b3e4eba9910ae6ee0eafc05d2af54 diff --git a/HideCharacter/obj/Debug/HideCharacter.csproj.AssemblyReference.cache b/HideCharacter/obj/Debug/HideCharacter.csproj.AssemblyReference.cache index 305f460e79932e384d922899c33872a86ba955fc..ec99aeb5b1e8e9d96898e8c293eed4fee0faa348 100644 GIT binary patch delta 73 zcmZ2?nYCdp>x4A6lS{?VvB^%%nKAu-I-|fOp%gZo*m9uAg^KnMWf4H&cl delta 833 zcma))O-$2Z7{}AGFVL=?hw%|3ThwSgR8*pZ39_*v9jq&KLjeE4Y(*FyUan4cI< z9!wxl;*2pd9!UgaB$0!OA@N8A1iub2fiV5&&hZX=?Z2E^Eo zKtR?jCCz|%DdKbm19?NsA$!^>@|;L;Ss{qnO4X*X&PRB?poCZ%S*TzxNap^ah6c$j z;2vbmq5WC#{7@^Mc@nyOE&===9)+Hu+SnMk39@8FCX1R;(2SC7nNwJWm6*!_KLRX_ z&-THsmJBRWSMu6v_;xAdtxL&S2f^n}^<>VwFpKY55Xy0mAHX@J2|25Rl}S{9b9WjY zJ8l5qA0++0_<$&-oL>SgZJ5C}d>-kh<^D({Rn!rw7=of=0}tUMwy>ern5)c{qpDdJ zEFDc)Se>n4fo6cp^QJXz3kE*GMT6k;^D@d&ZweM zG;Kl1($GZ1p1~?HEg?>brA<@_^%Rpj!hBv-W^~Q5Vo*6MNayg}-d=@dHaCy4yZm6_ z;2?Ft?pqngPmRFNDhn?{$y&6TD(`+u9|`Zv=82|jMEk1)+@>Es+?7Jy-Vh;U7AiV) zm)zvp!wK3vK_4NJRNP%fH^$(hSFD|hFdS@erfYJD$*qVyd}ZpvWa|AdfB7GKB5x4A6lS{?VvB^%%nKAu-I-|fOp%gZo*m9uAg^KnMWf4H&cl delta 833 zcma))O-$2Z7{}AGFVL=?hw%|3ThwSgR8*pZ39_*v9jq&KLjeE4Y(*FyUan4cI< z9!wxl;*2pd9!UgaB$0!OA@N8A1iub2fiV5&&hZX=?Z2E^Eo zKtR?jCCz|%DdKbm19?NsA$!^>@|;L;Ss{qnO4X*X&PRB?poCZ%S*TzxNap^ah6c$j z;2vbmq5WC#{7@^Mc@nyOE&===9)+Hu+SnMk39@8FCX1R;(2SC7nNwJWm6*!_KLRX_ z&-THsmJBRWSMu6v_;xAdtxL&S2f^n}^<>VwFpKY55Xy0mAHX@J2|25Rl}S{9b9WjY zJ8l5qA0++0_<$&-oL>SgZJ5C}d>-kh<^D({Rn!rw7=of=0}tUMwy>ern5)c{qpDdJ zEFDc)Se>n4fo6cp^QJXz3kE*GMT6k;^D@d&ZweM zG;Kl1($GZ1p1~?HEg?>brA<@_^%Rpj!hBv-W^~Q5Vo*6MNayg}-d=@dHaCy4yZm6_ z;2?Ft?pqngPmRFNDhn?{$y&6TD(`+u9|`Zv=82|jMEk1)+@>Es+?7Jy-Vh;U7AiV) zm)zvp!wK3vK_4NJRNP%fH^$(hSFD|hFdS@erfYJD$*qVyd}ZpvWa|AdfB7GKB5x4A6lS{?VvB^%%nK9i-iZN*N0#VM%-a?XWHnHVE;mKJ-CX)kLI43R< zU<{aCAS5~2LfCrp;|oEX7lWEkJN0|0}j BB?ABe delta 1028 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 jo+(Q@nN_bI|tDSKScizS+*cE diff --git a/HitFeedback/obj/rider.project.model.nuget.info b/HitFeedback/obj/rider.project.model.nuget.info index b4b6f59..ea4a121 100644 --- a/HitFeedback/obj/rider.project.model.nuget.info +++ b/HitFeedback/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17620100186005303 \ No newline at end of file +17623343068138064 \ No newline at end of file diff --git a/MyMainMenu/GameMainTitle.cs b/MyMainMenu/GameMainTitle.cs new file mode 100644 index 0000000..6bb9422 --- /dev/null +++ b/MyMainMenu/GameMainTitle.cs @@ -0,0 +1,66 @@ +using System; +using TMPro; +using UnityEngine; +using UnityEngine.UI; +using Object = UnityEngine.Object; + +namespace MyMainMenu +{ + public class GameMainTitle + { + public string mainTitleObjName = "MainTitle"; + private GameObject? titleObject; + private Image? logoImage; + private Sprite? logoSprite; + + public void Initialize() + { + Debug.Log("Initialize method started."); + // 查找所有 GameObject,并筛选出名称匹配的对象 + GameObject[] allObjects = Object.FindObjectsOfType(); + titleObject = Array.Find(allObjects, obj => obj.name == mainTitleObjName); + if (titleObject == null) + { + Debug.LogWarning("titleObject not found with name: " + mainTitleObjName); + return; + } + logoImage = titleObject.GetComponentInChildren(true); + if (logoImage != null) + { + Debug.Log("Image component found on titleObject."); + var texture = ImageLoader.LoadImageFromFile(@"C:\Users\Lenovo\Pictures\异噬.png"); + if (texture != null) + { + Debug.Log("Texture loaded successfully."); + logoSprite=Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); + logoImage.sprite = logoSprite; + Debug.Log("Sprite created and assigned to image component."); + } + else + { + Debug.LogError("Failed to load texture from file: C:\\Users\\Lenovo\\Pictures\\异噬.png"); + } + } + else + { + Debug.LogWarning("Image component not found on titleObject."); + } + Debug.Log("Initialize method finished."); + } + + public void SetTitle() + { + + } + + public void Update() + { + if (logoImage!=null&&logoImage.sprite!=logoSprite) + { + Debug.Log("logoImage is not null and its sprite is different from logoSprite. Updating logoImage.sprite."); // Add Log inside the if condition + logoImage.sprite = logoSprite; + } + } + + } +} \ No newline at end of file diff --git a/MyMainMenu/ImageLoader.cs b/MyMainMenu/ImageLoader.cs new file mode 100644 index 0000000..41bfa86 --- /dev/null +++ b/MyMainMenu/ImageLoader.cs @@ -0,0 +1,67 @@ +using System; +using System.IO; +using UnityEngine; + +namespace MyMainMenu +{ + public class ImageLoader + { + /// + /// 从指定文件路径加载图片并创建 Texture2D。 + /// 支持常用的图片格式 (如 .png, .jpg, .jpeg, .bmp, .tga) + /// + /// 图片文件的绝对路径。 + /// 如果为true,则创建一个新的Texture2D对象并加载图片数据。如果为false,它会尝试加载到默认的空白Texture2D对象上,但通常建议使用true。 + /// 指定纹理是否加载为线性颜色空间 (true) 或 sRGB 颜色空间 (false)。 + /// 加载成功的 Texture2D 对象,如果失败则返回 null。 + public static Texture2D? LoadImageFromFile(string filePath, bool createNewTexture = true, bool linear = false) + { + if (string.IsNullOrEmpty(filePath)) + { + Debug.LogError("ImageLoader: 图片文件路径为空或无效。"); + return null; + } + + if (!File.Exists(filePath)) + { + Debug.LogError($"ImageLoader: 文件不存在于路径: {filePath}"); + return null; + } + + Texture2D? texture = null; + try + { + var fileData = File.ReadAllBytes(filePath); + if (createNewTexture) + { + texture = new Texture2D(2, 2, TextureFormat.RGBA32, false, linear); + } + else if (texture == null) + { + Debug.LogError("ImageLoader: 未能提供现有Texture2D用于加载,且createNewTexture为false。"); + return null; + } + + var success = texture.LoadImage(fileData, true); + + if (!success) + { + Debug.LogError($"ImageLoader: 无法加载图片数据到Texture2D。请检查文件是否为有效的图片格式或是否损坏: {filePath}"); + UnityEngine.Object.Destroy(texture); // 销毁失败的纹理对象 + return null; + } + return texture; + } + catch (Exception ex) + { + Debug.LogError($"ImageLoader: 加载图片时发生错误: {filePath} - {ex.Message}"); + if (texture != null) + { + UnityEngine.Object.Destroy(texture); // 发生异常时销毁已创建的纹理 + } + + return null; + } + } + } +} \ No newline at end of file diff --git a/MyMainMenu/ModBehaviour.cs b/MyMainMenu/ModBehaviour.cs new file mode 100644 index 0000000..92b0588 --- /dev/null +++ b/MyMainMenu/ModBehaviour.cs @@ -0,0 +1,40 @@ +using System; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace MyMainMenu +{ + public class ModBehaviour:Duckov.Modding.ModBehaviour + { + public GameMainTitle gameMainTitle=new GameMainTitle(); + + void Awake() + { + SceneManager.sceneLoaded += OnSceneLoaded; + } + void OnDestroy() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } + + private void Update() + { + gameMainTitle.Update(); + } + + protected override void OnAfterSetup() + { + + } + + protected override void OnBeforeDeactivate() + { + + } + void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + gameMainTitle.Initialize(); + } + + } +} \ No newline at end of file diff --git a/MyMainMenu/MyMainMenu.csproj b/MyMainMenu/MyMainMenu.csproj new file mode 100644 index 0000000..006b109 --- /dev/null +++ b/MyMainMenu/MyMainMenu.csproj @@ -0,0 +1,25 @@ + + + + netstandard2.1 + enable + D:\steam\steamapps\common\Escape from Duckov + false + + + + D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Mods\MyMainMenu + false + none + + + + + + + + + + + + diff --git a/MyMainMenu/obj/MyMainMenu.csproj.nuget.dgspec.json b/MyMainMenu/obj/MyMainMenu.csproj.nuget.dgspec.json new file mode 100644 index 0000000..d573fa0 --- /dev/null +++ b/MyMainMenu/obj/MyMainMenu.csproj.nuget.dgspec.json @@ -0,0 +1,79 @@ +{ + "format": 1, + "restore": { + "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj": {} + }, + "projects": { + "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj", + "projectName": "MyMainMenu", + "projectPath": "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj", + "packagesPath": "C:\\Users\\Lenovo\\.nuget\\packages\\", + "outputPath": "D:\\vs_project\\DuckovMods\\MyMainMenu\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "D:\\vsShare\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Lenovo\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Lib.Harmony": { + "target": "Package", + "version": "[2.4.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.306\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.props b/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.props new file mode 100644 index 0000000..2e378fe --- /dev/null +++ b/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Lenovo\.nuget\packages\;D:\vsShare\NuGetPackages + PackageReference + 6.14.0 + + + + + + \ No newline at end of file diff --git a/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.targets b/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/MyMainMenu/obj/MyMainMenu.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/MyMainMenu/obj/Release/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/MyMainMenu/obj/Release/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 0000000..348b87f --- /dev/null +++ b/MyMainMenu/obj/Release/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfo.cs b/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfo.cs new file mode 100644 index 0000000..00892cd --- /dev/null +++ b/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+786025f720c05ae486c8c66d3a6114633ccd0dbf")] +[assembly: System.Reflection.AssemblyProductAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyTitleAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfoInputs.cache b/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfoInputs.cache new file mode 100644 index 0000000..44c4bfa --- /dev/null +++ b/MyMainMenu/obj/Release/MyMainMenu.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +b3ef56f4757a02383188b14d0c23f7bbd423d41a4f4cba0a12acb8688e7f7494 diff --git a/MyMainMenu/obj/Release/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig b/MyMainMenu/obj/Release/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..19ccc75 --- /dev/null +++ b/MyMainMenu/obj/Release/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,8 @@ +is_global = true +build_property.RootNamespace = MyMainMenu +build_property.ProjectDir = D:\vs_project\DuckovMods\MyMainMenu\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/MyMainMenu/obj/Release/MyMainMenu.assets.cache b/MyMainMenu/obj/Release/MyMainMenu.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..6e717da628c1b4763b89bb011b84310c4555e071 GIT binary patch literal 750 zcmWIWc6a1qU|`rN@?{mDv-37R^Rl_mjye80d9VA2LtMfFrVh@Uj63x;+)O}4P{0VJ zL!GT+LW@(2ier3I^YY8`WAyS$(^E@g3KEmE6Vp?RV{$T+^fD5Qa`W>l^@>u{VvO`m z^bBJ_ti05c;*!L?l*FPGBRzu{0}rUGl$;!9BpW~$g7_>z%nB7pr$F-DK0uqGW`N}R zk@$K+sc9fFvEa($lGI!fHzzf@Br`ux&owu*1SAFWj3AO0eXv787P0{`I}mdKF~}lL zAm##MZXgB)87~m?0Wrv-3WS0KsD?qp#VV$(I2afzsWE<~?x`gK(7*yo(kM_Xa&urY z2eJVcs305B0Y6ZH57}LwDd=G-j4T}njD288vVsGQHz2Vj!!r-+BY9vv>!ZfAK5{&> z_$B71B1arM)G%SsV$a-yoXq6RlAKDH)U?dJ)D%{?#GK+(j-b@y{G77X6qb;p(o`0Z Ob%ulj9Vrb$(jNecvCUNg literal 0 HcmV?d00001 diff --git a/MyMainMenu/obj/Release/MyMainMenu.csproj.AssemblyReference.cache b/MyMainMenu/obj/Release/MyMainMenu.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..b0ac304b914b6f29c37cd948ee580c978d5a4df5 GIT binary patch literal 85853 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 literal 0 HcmV?d00001 diff --git a/MyMainMenu/obj/Release/MyMainMenu.csproj.CoreCompileInputs.cache b/MyMainMenu/obj/Release/MyMainMenu.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..04a8f40 --- /dev/null +++ b/MyMainMenu/obj/Release/MyMainMenu.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +744bd96403f4872d2e8276a6d2820746941939c618dff3317b8abe5c93d2d407 diff --git a/MyMainMenu/obj/Release/MyMainMenu.csproj.FileListAbsolute.txt b/MyMainMenu/obj/Release/MyMainMenu.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..e60588f --- /dev/null +++ b/MyMainMenu/obj/Release/MyMainMenu.csproj.FileListAbsolute.txt @@ -0,0 +1,7 @@ +D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Mods\MyMainMenu\MyMainMenu.dll +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.csproj.AssemblyReference.cache +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.AssemblyInfoInputs.cache +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.AssemblyInfo.cs +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.csproj.CoreCompileInputs.cache +D:\vs_project\DuckovMods\MyMainMenu\obj\Release\MyMainMenu.dll diff --git a/MyMainMenu/obj/Release/MyMainMenu.dll b/MyMainMenu/obj/Release/MyMainMenu.dll new file mode 100644 index 0000000000000000000000000000000000000000..38f9c8d5d6dc2db7ce95c303a6c0e5ffe0c0526e GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/MyMainMenu/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/MyMainMenu/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 0000000..348b87f --- /dev/null +++ b/MyMainMenu/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfo.cs b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfo.cs new file mode 100644 index 0000000..00892cd --- /dev/null +++ b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+786025f720c05ae486c8c66d3a6114633ccd0dbf")] +[assembly: System.Reflection.AssemblyProductAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyTitleAttribute("MyMainMenu")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfoInputs.cache b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfoInputs.cache new file mode 100644 index 0000000..44c4bfa --- /dev/null +++ b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +b3ef56f4757a02383188b14d0c23f7bbd423d41a4f4cba0a12acb8688e7f7494 diff --git a/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..19ccc75 --- /dev/null +++ b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,8 @@ +is_global = true +build_property.RootNamespace = MyMainMenu +build_property.ProjectDir = D:\vs_project\DuckovMods\MyMainMenu\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.assets.cache b/MyMainMenu/obj/Release/netstandard2.1/MyMainMenu.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..bda881d41e97ea5d273208a76639e229b389e909 GIT binary patch literal 182 zcmWIWc6a1qU|_i1X)kG+zI^B1TTB1VRdZ>GoZBt9&fDYsRi6~zU;IbEYyzqw7BB%7 zDmYukgche37039b=H-{=$LQsirl*#~6eK2RC#I(s$AAozaIuOhD-O;`EJ}^>D|JsT K34qEHvIzjvVJH~@ literal 0 HcmV?d00001 diff --git a/MyMainMenu/obj/project.assets.json b/MyMainMenu/obj/project.assets.json new file mode 100644 index 0000000..356b386 --- /dev/null +++ b/MyMainMenu/obj/project.assets.json @@ -0,0 +1,239 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.1": { + "Lib.Harmony/2.4.1": { + "type": "package", + "dependencies": { + "Lib.Harmony.Ref": "2.4.1" + }, + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Lib.Harmony.Ref/2.4.1": { + "type": "package", + "dependencies": { + "System.Reflection.Emit": "4.7.0" + }, + "compile": { + "ref/netstandard2.0/0Harmony.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/_._": {} + }, + "runtime": { + "lib/netstandard2.1/_._": {} + } + } + } + }, + "libraries": { + "Lib.Harmony/2.4.1": { + "sha512": "iLTZi/kKKB18jYEIwReZSx2xXyVUh4J1swReMgvYBBBn4tzA1Nd0PJlVyntY5BDdSiXSxzmvjc/3OYfFs0YwFg==", + "type": "package", + "path": "lib.harmony/2.4.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "HarmonyLogo.png", + "LICENSE", + "README.md", + "lib.harmony.2.4.1.nupkg.sha512", + "lib.harmony.nuspec", + "lib/net35/0Harmony.dll", + "lib/net35/0Harmony.pdb", + "lib/net35/0Harmony.xml", + "lib/net452/0Harmony.dll", + "lib/net452/0Harmony.pdb", + "lib/net452/0Harmony.xml", + "lib/net472/0Harmony.dll", + "lib/net472/0Harmony.pdb", + "lib/net472/0Harmony.xml", + "lib/net48/0Harmony.dll", + "lib/net48/0Harmony.pdb", + "lib/net48/0Harmony.xml", + "lib/net5.0/0Harmony.dll", + "lib/net5.0/0Harmony.pdb", + "lib/net5.0/0Harmony.xml", + "lib/net6.0/0Harmony.dll", + "lib/net6.0/0Harmony.pdb", + "lib/net6.0/0Harmony.xml", + "lib/net7.0/0Harmony.dll", + "lib/net7.0/0Harmony.pdb", + "lib/net7.0/0Harmony.xml", + "lib/net8.0/0Harmony.dll", + "lib/net8.0/0Harmony.pdb", + "lib/net8.0/0Harmony.xml", + "lib/net9.0/0Harmony.dll", + "lib/net9.0/0Harmony.pdb", + "lib/net9.0/0Harmony.xml", + "lib/netcoreapp3.0/0Harmony.dll", + "lib/netcoreapp3.0/0Harmony.pdb", + "lib/netcoreapp3.0/0Harmony.xml", + "lib/netcoreapp3.1/0Harmony.dll", + "lib/netcoreapp3.1/0Harmony.pdb", + "lib/netcoreapp3.1/0Harmony.xml", + "lib/netstandard2.0/_._" + ] + }, + "Lib.Harmony.Ref/2.4.1": { + "sha512": "+u1y2Qd6OlSUQ8JtrsrSo3adnAsrXMJ2YPYtbW+FAmdPI5yw34M9VX4bKl8ZwRuUzaGzZIz+oGMbn/yS4fWtZw==", + "type": "package", + "path": "lib.harmony.ref/2.4.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "HarmonyLogo.png", + "LICENSE", + "README.md", + "lib.harmony.ref.2.4.1.nupkg.sha512", + "lib.harmony.ref.nuspec", + "ref/netstandard2.0/0Harmony.dll", + "ref/netstandard2.0/0Harmony.xml" + ] + }, + "System.Reflection.Emit/4.7.0": { + "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "type": "package", + "path": "system.reflection.emit/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Reflection.Emit.dll", + "lib/netstandard1.1/System.Reflection.Emit.xml", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.dll", + "lib/netstandard2.0/System.Reflection.Emit.xml", + "lib/netstandard2.1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/netstandard2.0/System.Reflection.Emit.dll", + "ref/netstandard2.0/System.Reflection.Emit.xml", + "ref/netstandard2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll", + "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml", + "system.reflection.emit.4.7.0.nupkg.sha512", + "system.reflection.emit.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.1": [ + "Lib.Harmony >= 2.4.1" + ] + }, + "packageFolders": { + "C:\\Users\\Lenovo\\.nuget\\packages\\": {}, + "D:\\vsShare\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj", + "projectName": "MyMainMenu", + "projectPath": "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj", + "packagesPath": "C:\\Users\\Lenovo\\.nuget\\packages\\", + "outputPath": "D:\\vs_project\\DuckovMods\\MyMainMenu\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "D:\\vsShare\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Lenovo\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "netstandard2.1" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "netstandard2.1": { + "targetAlias": "netstandard2.1", + "dependencies": { + "Lib.Harmony": { + "target": "Package", + "version": "[2.4.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "NETStandard.Library": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.306\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/MyMainMenu/obj/project.nuget.cache b/MyMainMenu/obj/project.nuget.cache new file mode 100644 index 0000000..f892c5a --- /dev/null +++ b/MyMainMenu/obj/project.nuget.cache @@ -0,0 +1,12 @@ +{ + "version": 2, + "dgSpecHash": "/bMBU9IYEbw=", + "success": true, + "projectFilePath": "D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Lenovo\\.nuget\\packages\\lib.harmony\\2.4.1\\lib.harmony.2.4.1.nupkg.sha512", + "C:\\Users\\Lenovo\\.nuget\\packages\\lib.harmony.ref\\2.4.1\\lib.harmony.ref.2.4.1.nupkg.sha512", + "C:\\Users\\Lenovo\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/MyMainMenu/obj/project.packagespec.json b/MyMainMenu/obj/project.packagespec.json new file mode 100644 index 0000000..6f00eed --- /dev/null +++ b/MyMainMenu/obj/project.packagespec.json @@ -0,0 +1 @@ +"restore":{"projectUniqueName":"D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj","projectName":"MyMainMenu","projectPath":"D:\\vs_project\\DuckovMods\\MyMainMenu\\MyMainMenu.csproj","outputPath":"D:\\vs_project\\DuckovMods\\MyMainMenu\\obj\\","projectStyle":"PackageReference","fallbackFolders":["D:\\vsShare\\NuGetPackages"],"originalTargetFrameworks":["netstandard2.1"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"netstandard2.1":{"targetAlias":"netstandard2.1","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"netstandard2.1":{"targetAlias":"netstandard2.1","dependencies":{"Lib.Harmony":{"target":"Package","version":"[2.4.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"NETStandard.Library":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.306\\RuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/MyMainMenu/obj/rider.project.model.nuget.info b/MyMainMenu/obj/rider.project.model.nuget.info new file mode 100644 index 0000000..5257283 --- /dev/null +++ b/MyMainMenu/obj/rider.project.model.nuget.info @@ -0,0 +1 @@ +17623501729185691 \ No newline at end of file diff --git a/MyMainMenu/obj/rider.project.restore.info b/MyMainMenu/obj/rider.project.restore.info new file mode 100644 index 0000000..5257283 --- /dev/null +++ b/MyMainMenu/obj/rider.project.restore.info @@ -0,0 +1 @@ +17623501729185691 \ No newline at end of file diff --git a/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfo.cs b/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfo.cs index 0b997b0..c0e3e31 100644 --- a/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfo.cs +++ b/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0206a83f56b5a794fe2f173b4a047cc4f0d4cd90")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+786025f720c05ae486c8c66d3a6114633ccd0dbf")] [assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")] diff --git a/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfoInputs.cache b/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfoInputs.cache index fbe10b7..c2e6df2 100644 --- a/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfoInputs.cache +++ b/SceneSnapshot/obj/Debug/SceneSnapshot.AssemblyInfoInputs.cache @@ -1 +1 @@ -76527c0524d74c181c8c103eb804bb9ea72920abff0b6da2de1250e7811cd906 +d0b14bb5a2fe44e4165960f86b2001d300338f5655dddb8b391c1544fb8fcca4 diff --git a/SceneSnapshot/obj/Debug/SceneSnapshot.csproj.AssemblyReference.cache b/SceneSnapshot/obj/Debug/SceneSnapshot.csproj.AssemblyReference.cache index e17280e414f6aee31693604d70e73fe70ad6baaa..4c296232175a39c081cc06d4b00eef120438eafb 100644 GIT binary patch delta 90 zcmZp^!MblX>x4A6lS{?VvB^%%nKAi;U&Iqg9fIs;ps@_dC1{KYm9q&AqzW#MU}0-B6tenBzfxYLMXO}&PxYUofK zsApMOOO2>HJogtnQ8{d{u12wyaGVfi#LRLjs>%#9s5PIHv5DixWVf-K?aS>p;-net z6aq{6&-eK1^cq?7|xP1WD2Pf*^} zFUVFGOxu(EWDmj23l7%aba}GFvg8CXo^W$lUFLf^x?PBn&`F|L6{BW~D5G{`6K;)} z+zu}j?2L4WoiEGTt}$Z4#)T%AjTJRq6du+vP3fW%BRc6J!^9+d3_i1G%gbU$QZzL@ zWRlp`6cH^-aB{*h6PBnG3JdRAVP^5DJD6;8^L(2pyH)CQfXd31bTUb(nGTr*Cq$b= znm%V@%W`^ypwPe+w}pZd^!qx%c*bR_OHl;sMz@R2^4$D=SEgKF7+YxtkCRg{x6}%E zJ_t~?T7RTMQSC0(Nl~&%i|E#v&6#0}K}t<^C`E~d;5-w6sr(9F=#402n(B z*2nJJaE;6f2M+wT?S&Cak_yGtQqs2UNf&sM>4D$4XXm8$i*JkY?;Sb&ESHS#(U844 Sh5u!^xn_EkdA-S?AJQLiQC`ph diff --git a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs index 0c828c0..5dc9bfb 100644 --- a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs +++ b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5d69efbc3f80a5422cef0884e02fb27adf20b467")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+786025f720c05ae486c8c66d3a6114633ccd0dbf")] [assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")] diff --git a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache index 527661e..0b5a2ab 100644 --- a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache +++ b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache @@ -1 +1 @@ -4cb78221af3251625ca99f740da024b47f366123d3acdfd330074e35f359044e +0377007546f92d23941a0c0e6a0cef8c6022db4ce07a6a7b98556714f9c594f1 diff --git a/SceneSnapshot/obj/Release/SceneSnapshot.csproj.AssemblyReference.cache b/SceneSnapshot/obj/Release/SceneSnapshot.csproj.AssemblyReference.cache index e17280e414f6aee31693604d70e73fe70ad6baaa..4c296232175a39c081cc06d4b00eef120438eafb 100644 GIT binary patch delta 90 zcmZp^!MblX>x4A6lS{?VvB^%%nKAi;U&Iqg9fIs;ps@_dC1{KYm9q&AqzW#MU}0-B6tenBzfxYLMXO}&PxYUofK zsApMOOO2>HJogtnQ8{d{u12wyaGVfi#LRLjs>%#9s5PIHv5DixWVf-K?aS>p;-net z6aq{6&-eK1^cq?7|xP1WD2Pf*^} zFUVFGOxu(EWDmj23l7%aba}GFvg8CXo^W$lUFLf^x?PBn&`F|L6{BW~D5G{`6K;)} z+zu}j?2L4WoiEGTt}$Z4#)T%AjTJRq6du+vP3fW%BRc6J!^9+d3_i1G%gbU$QZzL@ zWRlp`6cH^-aB{*h6PBnG3JdRAVP^5DJD6;8^L(2pyH)CQfXd31bTUb(nGTr*Cq$b= znm%V@%W`^ypwPe+w}pZd^!qx%c*bR_OHl;sMz@R2^4$D=SEgKF7+YxtkCRg{x6}%E zJ_t~?T7RTMQSC0(Nl~&%i|E#v&6#0}K}t<^C`E~d;5-w6sr(9F=#402n(B z*2nJJaE;6f2M+wT?S&Cak_yGtQqs2UNf&sM>4D$4XXm8$i*JkY?;Sb&ESHS#(U844 Sh5u!^xn_EkdA-S?AJQLiQC`ph diff --git a/SceneSnapshot/obj/rider.project.model.nuget.info b/SceneSnapshot/obj/rider.project.model.nuget.info index 31df8f7..ea4a121 100644 --- a/SceneSnapshot/obj/rider.project.model.nuget.info +++ b/SceneSnapshot/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17619862901687226 \ No newline at end of file +17623343068138064 \ No newline at end of file diff --git a/SceneView/CanvasControl.cs b/SceneView/CanvasControl.cs new file mode 100644 index 0000000..5dc5f27 --- /dev/null +++ b/SceneView/CanvasControl.cs @@ -0,0 +1,60 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace SceneView +{ + public class CanvasControl : MonoBehaviour + { + public SceneViewPanel? sceneViewPanel; + + public static Vector2 panelSize = new Vector2(500, 800); + + public const string ViewCanvasName = "_SceneViewCanvas"; + public const string ShowAim = "LOGO"; + + private void Start() + { + InitCanvas(); + } + + public void Update() + { + if (Input.GetKeyDown(KeyCode.F2)) + { + Debug.Log("切换"); + sceneViewPanel.gameObject.SetActive(!sceneViewPanel.gameObject.activeSelf); + if (sceneViewPanel.gameObject.activeSelf) + { + sceneViewPanel.Refresh(); + } + } + } + + private void InitCanvas() + { + var canvasObj = new GameObject(ViewCanvasName); + var canvas = canvasObj.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvas.sortingOrder = 1000; + canvasObj.AddComponent(); + canvasObj.AddComponent(); + DontDestroyOnLoad(canvasObj); + + sceneViewPanel=CreateSceneViewPanel(canvasObj.transform); + } + public static SceneViewPanel CreateSceneViewPanel(Transform parent) + { + var panelObj = new GameObject("SceneViewPanel"); + panelObj.transform.SetParent(parent, false); + var sceneViewPanel = panelObj.AddComponent(); + var panelImage = panelObj.AddComponent(); + panelImage.color = new Color(0.5f, 0.5f, 0.5f, 0.3f); + + var rectTransform = panelObj.GetComponent(); + rectTransform.sizeDelta = panelSize; + + return sceneViewPanel; + } + } +} \ No newline at end of file diff --git a/SceneView/ControlUtilities.cs b/SceneView/ControlUtilities.cs new file mode 100644 index 0000000..d3ebae8 --- /dev/null +++ b/SceneView/ControlUtilities.cs @@ -0,0 +1,432 @@ +using System; +using TMPro; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; + +namespace SceneView +{ + [Serializable] + public struct RectTransformConfig + { + public Vector2 AnchorMin; + public Vector2 AnchorMax; + public Vector2 AnchoredPosition; + public Vector2 SizeDelta; + public Vector2 OffsetMin; + public Vector2 OffsetMax; + public Vector2 Pivot; + + // 默认配置 + public static readonly RectTransformConfig Default = new RectTransformConfig( + anchorMin: new Vector2(0, 1), + anchorMax: new Vector2(0, 1), + anchoredPosition: Vector2.zero, + sizeDelta: Vector2.zero, + offsetMin: Vector2.zero, + offsetMax: Vector2.zero, + pivot: new Vector2(0.5f, 0.5f) // 默认居中轴心点 + ); + + public RectTransformConfig( + Vector2 anchorMin, + Vector2 anchorMax, + Vector2 anchoredPosition, + Vector2 sizeDelta, + Vector2 offsetMin, + Vector2 offsetMax, + Vector2 pivot) + { + AnchorMin = anchorMin; + AnchorMax = anchorMax; + AnchoredPosition = anchoredPosition; + SizeDelta = sizeDelta; + OffsetMin = offsetMin; + OffsetMax = offsetMax; + Pivot = pivot; + } + } + + [Serializable] + public struct ButtonConfig + { + public RectTransformConfig RectConfig; + public Color BackgroundColor; + public string Text; + public int FontSize; + public Color TextColor; + public bool RaycastTarget; + + public static readonly ButtonConfig Default = new ButtonConfig( + rectConfig: RectTransformConfig.Default, + backgroundColor: new Color(0.2f, 0.2f, 0.2f, 1f), + text: "Button", + fontSize: 18, + textColor: Color.white, + raycastTarget: true + ); + + public ButtonConfig( + RectTransformConfig rectConfig, + Color backgroundColor, + string text, + int fontSize, + Color textColor, + bool raycastTarget = true) + { + RectConfig = rectConfig; + BackgroundColor = backgroundColor; + Text = text; + FontSize = fontSize; + TextColor = textColor; + RaycastTarget = raycastTarget; + } + } + + [Serializable] + public struct TextConfig + { + public RectTransformConfig RectConfig; + public string Text; + public int FontSize; + public Color TextColor; + public TextAlignmentOptions Alignment; + public bool RaycastTarget; + + public static readonly TextConfig Default = new TextConfig( + rectConfig: RectTransformConfig.Default, + text: "New Text", + fontSize: 18, + textColor: Color.white, + alignment: TextAlignmentOptions.Center, + raycastTarget: false + ); + + public TextConfig( + string text, + int fontSize, + Color textColor, + TextAlignmentOptions alignment, + bool raycastTarget, + RectTransformConfig rectConfig) + { + RectConfig = rectConfig; + Text = text; + FontSize = fontSize; + TextColor = textColor; + Alignment = alignment; + RaycastTarget = raycastTarget; + } + } + + [Serializable] + public struct ScrollViewConfig + { + public Vector2 SizeDelta; // ScrollView 的尺寸 + public bool Vertical; + public bool Horizontal; + public Color BackgroundColor; + public Vector2 ContentPadding; // 内容区域的内边距(上下左右) + + public static readonly ScrollViewConfig Default = new ScrollViewConfig + { + SizeDelta = new Vector2(400, 300), + Vertical = true, + Horizontal = false, + BackgroundColor = new Color(0.1f, 0.1f, 0.1f, 0.8f), + ContentPadding = new Vector2(10, 10) // (horizontal, vertical) + }; + } + + [Serializable] + public struct InputFieldConfig + { + public RectTransformConfig RectConfig; + public Color BackgroundColor; + public string PlaceholderText; + public int PlaceholderFontSize; + public Color PlaceholderTextColor; + public Color TextColor; + public int FontSize; + public TextAlignmentOptions TextAlignment; + public TMP_InputField.CharacterValidation CharacterValidation; + public int CharacterLimit; + public static readonly InputFieldConfig Default = new InputFieldConfig( + rectConfig: RectTransformConfig.Default, + backgroundColor: new Color(0.2f, 0.2f, 0.2f, 1f), + placeholderText: "Enter text here", + placeholderFontSize: 14, + placeholderTextColor: new Color(0.7f, 0.7f, 0.7f, 1f), + textColor: Color.white, + fontSize: 18, + textAlignment: TextAlignmentOptions.Left, + characterValidation: TMP_InputField.CharacterValidation.None, + characterLimit: 0 + ); + public InputFieldConfig( + RectTransformConfig rectConfig, + Color backgroundColor, + string placeholderText, + int placeholderFontSize, + Color placeholderTextColor, + Color textColor, + int fontSize, + TextAlignmentOptions textAlignment, + TMP_InputField.CharacterValidation characterValidation = TMP_InputField.CharacterValidation.None, + int characterLimit = 0) + { + RectConfig = rectConfig; + BackgroundColor = backgroundColor; + PlaceholderText = placeholderText; + PlaceholderFontSize = placeholderFontSize; + PlaceholderTextColor = placeholderTextColor; + TextColor = textColor; + FontSize = fontSize; + TextAlignment = textAlignment; + CharacterValidation = characterValidation; + CharacterLimit = characterLimit; + } + } + + public static class ControlUtilities + { + // 通用方法:将 RectTransformConfig 应用于 RectTransform + private static void ApplyRectTransformConfig(RectTransform rectTransform, RectTransformConfig config) + { + rectTransform.anchorMin = config.AnchorMin; + rectTransform.anchorMax = config.AnchorMax; + rectTransform.pivot = config.Pivot; + + var isStretched = config.SizeDelta == Vector2.zero; + + if (isStretched) + { + rectTransform.offsetMin = config.OffsetMin; + rectTransform.offsetMax = config.OffsetMax; + } + else + { + rectTransform.anchoredPosition = config.AnchoredPosition; + rectTransform.sizeDelta = config.SizeDelta; + } + } + + // ======================== + // 按钮创建 + // ======================== + public static (Button? button, TextMeshProUGUI? text) CreateButton(RectTransform? parent, ButtonConfig config, + UnityAction? onClick) + { + var btnObj = new GameObject(config.Text + "Button"); + var btnRect = btnObj.AddComponent(); + btnRect.SetParent(parent, false); + + ApplyRectTransformConfig(btnRect, config.RectConfig); + + var button = btnObj.AddComponent