feat: 受击音效更新类别控制
This commit is contained in:
73
UIFrame/GameOriginMainMenuUI.cs
Normal file
73
UIFrame/GameOriginMainMenuUI.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using Duckov.UI;
|
||||
using Duckov.Utilities;
|
||||
using TMPro;
|
||||
using UIFrame.Utilities;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace UIFrame
|
||||
{
|
||||
public class GameOriginMainMenuUI
|
||||
{
|
||||
public GameObject mainMenuContainer;
|
||||
public Image? title;
|
||||
public TMP_Text[]? allTexts;
|
||||
|
||||
public Sprite titleSprite;
|
||||
|
||||
public bool linkMainMenu=false;
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
SceneLoader.onAfterSceneInitialize += OnAfterSceneInitialize;
|
||||
}
|
||||
|
||||
public void Cleanup()
|
||||
{
|
||||
SceneLoader.onAfterSceneInitialize -= OnAfterSceneInitialize;
|
||||
}
|
||||
|
||||
private void OnAfterSceneInitialize(SceneLoadingContext sceneLoadingContext)
|
||||
{
|
||||
linkMainMenu = false;
|
||||
LinkMainMenuObj();
|
||||
}
|
||||
|
||||
public void LinkMainMenuObj()
|
||||
{
|
||||
mainMenuContainer = GameObject.Find("MainMenuContainer");
|
||||
if(!mainMenuContainer)
|
||||
{
|
||||
Debug.LogWarning("Could not find Main Menu Container");
|
||||
return;
|
||||
}
|
||||
Debug.Log("Main Menu Container initialized");
|
||||
allTexts = mainMenuContainer.GetComponentsInChildren<TMP_Text>();
|
||||
title = GameObjectTool.FindChildByName(mainMenuContainer.transform, "MainTitle")?.GetComponent<Image>();
|
||||
linkMainMenu = true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public bool SetFont(TMP_FontAsset font)
|
||||
{
|
||||
if(allTexts == null || allTexts.Length == 0)
|
||||
return false;
|
||||
foreach (var text in allTexts)
|
||||
{
|
||||
text.font = font;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool SetTitle(Sprite texture)
|
||||
{
|
||||
titleSprite=texture;
|
||||
if(title==null)
|
||||
return false;
|
||||
title.sprite = texture;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
7
UIFrame/Manager/TextureManager.cs
Normal file
7
UIFrame/Manager/TextureManager.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace UIFrame.Manager
|
||||
{
|
||||
public class TextureManager
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,69 @@
|
||||
using System;
|
||||
using Duckov.Modding;
|
||||
using Duckov.Options.UI;
|
||||
using Duckov.UI;
|
||||
using Duckov.UI.Animations;
|
||||
using Duckov.Utilities;
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrame
|
||||
{
|
||||
public class ModBehaviour:Duckov.Modding.ModBehaviour
|
||||
{
|
||||
private const string MOD_ID="UIFrame";
|
||||
|
||||
private GameObject? workerObject;
|
||||
|
||||
private Harmony? harmony;
|
||||
|
||||
protected override void OnAfterSetup()
|
||||
{
|
||||
Debug.Log("OnAfterSetup");
|
||||
|
||||
CreateAPIObject();
|
||||
if (harmony == null)
|
||||
{
|
||||
harmony=new HarmonyLib.Harmony(MOD_ID);
|
||||
}
|
||||
harmony.PatchAll();
|
||||
Test();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnBeforeDeactivate()
|
||||
{
|
||||
Debug.Log("OnBeforeDeactivate");
|
||||
ClearAPIObject();
|
||||
harmony?.UnpatchAll(MOD_ID);
|
||||
harmony = null;
|
||||
}
|
||||
|
||||
private void CreateAPIObject()
|
||||
{
|
||||
if(workerObject)
|
||||
return;
|
||||
workerObject = new GameObject($"{MOD_ID}_APIObject");
|
||||
workerObject.AddComponent<UIFrameWorker>();
|
||||
}
|
||||
|
||||
private void ClearAPIObject()
|
||||
{
|
||||
if(!workerObject)
|
||||
return;
|
||||
Destroy(workerObject);
|
||||
workerObject = null;
|
||||
}
|
||||
|
||||
private void Test()
|
||||
{
|
||||
if(!UIFrameAPI.Initialize())
|
||||
return;
|
||||
if (UIFrameAPI.SetGameTitle(@"C:\Users\Lenovo\Pictures\异噬.png"))
|
||||
{
|
||||
Debug.Log("设置标题完成");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("标题设置失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
UIFrame/Patch/PatchSceneLoaderLoadMainMenu.cs
Normal file
15
UIFrame/Patch/PatchSceneLoaderLoadMainMenu.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrame.Patch
|
||||
{
|
||||
[HarmonyLib.HarmonyPatch(typeof(SceneLoader), "LoadMainMenu")]
|
||||
public class PatchSceneLoaderLoadMainMenu
|
||||
{
|
||||
public static void Postfix()
|
||||
{
|
||||
Debug.Log("LoadMainMenu called");
|
||||
}
|
||||
}
|
||||
}
|
||||
38
UIFrame/Singleton.cs
Normal file
38
UIFrame/Singleton.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
|
||||
namespace UIFrame
|
||||
{
|
||||
public abstract class Singleton<T> where T : class
|
||||
{
|
||||
private static T? _instance;
|
||||
private static readonly object _lock = new object(); // 用于多线程安全
|
||||
public static T? Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
// 在多线程环境下,确保只有一个线程能够创建实例
|
||||
lock (_lock)
|
||||
{
|
||||
if (_instance == null)
|
||||
{
|
||||
|
||||
_instance = Activator.CreateInstance(typeof(T), true) as T;
|
||||
if (_instance == null)
|
||||
{
|
||||
throw new InvalidOperationException($"无法为类型 {typeof(T).Name} 创建单例实例。" +
|
||||
"请确保它有一个私有的无参构造函数。");
|
||||
}
|
||||
}
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected Singleton()
|
||||
{
|
||||
if (_instance != null)
|
||||
{
|
||||
throw new InvalidOperationException($"试图创建第二个单例实例 {typeof(T).Name}。请通过 Singleton<{typeof(T).Name}>.Instance 访问。");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,8 @@
|
||||
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\Unity*" Private="False" />
|
||||
<Reference Include="$(DuckovPath)\Duckov_Data\Managed\FMODUnity.dll" Private="False" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Lib.Harmony" Version="2.4.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,7 +1,99 @@
|
||||
using System.Collections.Generic;
|
||||
using UIFrameAPI;
|
||||
using UnityEngine;
|
||||
|
||||
//改为自己的命名空间更好,这是一个画布单元,一个命名空间一个画布
|
||||
namespace UIFrame
|
||||
{
|
||||
public class UIFrameAPI
|
||||
//反射虽然很好用,但我认为用组件传递高效
|
||||
public static class UIFrameAPI
|
||||
{
|
||||
private static UIFrameAPIComponent? _apiComponent;
|
||||
private static bool createdCanvas = false;
|
||||
private static readonly string NameSpace = typeof(UIFrameAPI).Namespace ?? "UIFrame";
|
||||
|
||||
public static Dictionary<string, Texture2D> textureCache = new Dictionary<string, Texture2D>();
|
||||
public static Dictionary<string, Sprite> spriteCache = new Dictionary<string, Sprite>();
|
||||
|
||||
/// <summary>
|
||||
/// 初始化API
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static bool Initialize()
|
||||
{
|
||||
if (_apiComponent!=null)
|
||||
return true;
|
||||
_apiComponent = Object.FindObjectOfType<UIFrameAPIComponent>();
|
||||
return _apiComponent;
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置标题图片(游戏中的标题是图片)
|
||||
/// </summary>
|
||||
/// <param name="imageFilePath">图片路径</param>
|
||||
/// <returns></returns>
|
||||
public static bool SetGameTitle(string imageFilePath)
|
||||
{
|
||||
var texture=LoadSprite(imageFilePath);
|
||||
if(texture==null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return _apiComponent&&_apiComponent.SetTitleImage(texture);
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置标题图片(游戏中的标题是图片)
|
||||
/// </summary>
|
||||
/// <param name="sprite">贴图</param>
|
||||
/// <returns></returns>
|
||||
public static bool SetGameTitle(Sprite sprite)
|
||||
{
|
||||
return _apiComponent&&_apiComponent.SetTitleImage(sprite);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载图片文件为Texture2D
|
||||
/// Texture2D实际存储了图片,图片的数据会上传显卡
|
||||
/// 此函数默认加载后不保留内存备份,即不可读像素
|
||||
/// 函数会建立文件到图片的索引缓存
|
||||
/// </summary>
|
||||
/// <param name="imageFilePath"></param>
|
||||
/// <returns></returns>
|
||||
public static Texture2D? LoadImage(string imageFilePath)
|
||||
{
|
||||
if (!textureCache.ContainsKey(imageFilePath))
|
||||
{
|
||||
var texture=_apiComponent.LoadTexture(imageFilePath);
|
||||
if (texture != null)
|
||||
{
|
||||
textureCache[imageFilePath] = texture;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"加载图片:{imageFilePath}失败");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return textureCache[imageFilePath];
|
||||
}
|
||||
/// <summary>
|
||||
/// 加载图片为Sprite
|
||||
/// 直接简单的调用LoadImage再创建一个代表此图片的Sprite
|
||||
/// Sprite只是表明了图片的处理方式,所以为了灵活性建议自己创建
|
||||
/// 此函数会缓存地址到Sprite的索引
|
||||
/// </summary>
|
||||
/// <param name="imageFilePath"></param>
|
||||
/// <returns></returns>
|
||||
public static Sprite? LoadSprite(string imageFilePath)
|
||||
{
|
||||
var texture=LoadImage(imageFilePath);
|
||||
if (texture==null)
|
||||
return null;
|
||||
if (!spriteCache.ContainsKey(imageFilePath))
|
||||
{
|
||||
spriteCache[imageFilePath] = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
|
||||
}
|
||||
return spriteCache[imageFilePath];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
21
UIFrame/UIFrameAPIComponent.cs
Normal file
21
UIFrame/UIFrameAPIComponent.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrameAPI
|
||||
{
|
||||
public abstract class UIFrameAPIComponent:MonoBehaviour
|
||||
{
|
||||
public abstract bool CreateCanvas(string name);
|
||||
|
||||
//设置游戏主菜单的原版标题
|
||||
public abstract bool SetTitleImage(Sprite sprite);
|
||||
|
||||
//创建一个TMP字体
|
||||
public abstract TMP_FontAsset CreateFontAsset(string fontFilePath);
|
||||
|
||||
//设置游戏字体
|
||||
public abstract bool SetFont(TMP_FontAsset font);
|
||||
|
||||
public abstract Texture2D? LoadTexture(string imageFilePath);
|
||||
}
|
||||
}
|
||||
65
UIFrame/UIFrameWorker.cs
Normal file
65
UIFrame/UIFrameWorker.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UIFrameAPI;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.TextCore.LowLevel;
|
||||
|
||||
namespace UIFrame
|
||||
{
|
||||
public class UIFrameWorker : UIFrameAPIComponent
|
||||
{
|
||||
public GameOriginMainMenuUI gameOriginMainMenuUI = new GameOriginMainMenuUI();
|
||||
public Dictionary<string, Canvas> canvasDic = new Dictionary<string, Canvas>();
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
gameOriginMainMenuUI.Initialize();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
gameOriginMainMenuUI.Cleanup();
|
||||
}
|
||||
|
||||
|
||||
public override bool CreateCanvas(string name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool SetTitleImage(Sprite sprite)
|
||||
{
|
||||
return gameOriginMainMenuUI.SetTitle(sprite);
|
||||
}
|
||||
|
||||
|
||||
public override TMP_FontAsset CreateFontAsset(string fontFilePath)
|
||||
{
|
||||
var font = Font.CreateDynamicFontFromOSFont(fontFilePath, 24);
|
||||
var tmpFont = TMP_FontAsset.CreateFontAsset(
|
||||
font,
|
||||
samplingPointSize: 72, // 采样点大小,影响字体质量
|
||||
atlasPadding: 4, // 图集内字符间距
|
||||
renderMode: GlyphRenderMode.SDFAA, // 推荐使用 SDF 抗锯齿模式
|
||||
atlasWidth: 1024, // 图集宽度 (2的幂)
|
||||
atlasHeight: 1024, // 图集高度 (2的幂)
|
||||
atlasPopulationMode: AtlasPopulationMode.Dynamic, // 动态填充
|
||||
enableMultiAtlasSupport: true // 启用多图集支持
|
||||
);
|
||||
return tmpFont;
|
||||
}
|
||||
|
||||
public override bool SetFont(TMP_FontAsset font)
|
||||
{
|
||||
return gameOriginMainMenuUI.SetFont(font);
|
||||
}
|
||||
|
||||
public override Texture2D? LoadTexture(string imageFilePath)
|
||||
{
|
||||
return Utilities.ImageLoader.LoadImageFromFile(imageFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace UIFrame
|
||||
{
|
||||
public static class UIManager
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
66
UIFrame/Utilities/GameObjectTool.cs
Normal file
66
UIFrame/Utilities/GameObjectTool.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrame.Utilities
|
||||
{
|
||||
public class GameObjectTool
|
||||
{
|
||||
/// <summary>
|
||||
/// 在指定父对象下,查找第一个匹配名称的子GameObject(可以是孙子、曾孙等)
|
||||
/// </summary>
|
||||
/// <param name="parent">要查找的父Transform。</param>
|
||||
/// <param name="name">要查找的GameObject的名称。</param>
|
||||
/// <returns>找到的GameObject,如果未找到则返回null。</returns>
|
||||
public static GameObject? FindChildByName(Transform parent, string name)
|
||||
{
|
||||
// 查找父对象本身是否就是目标对象
|
||||
if (parent.name.Equals(name))
|
||||
{
|
||||
return parent.gameObject;
|
||||
}
|
||||
// 遍历所有直接子对象
|
||||
foreach (Transform child in parent)
|
||||
{
|
||||
// 检查当前子对象是否是目标对象
|
||||
if (child.name.Equals(name))
|
||||
{
|
||||
return child.gameObject;
|
||||
}
|
||||
// 递归查找子对象的子对象
|
||||
var found = FindChildByName(child, name);
|
||||
if (found)
|
||||
{
|
||||
return found;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 在指定父对象下,查找所有匹配名称的子GameObject(可以是孙子、曾孙等),不区分大小写。
|
||||
/// </summary>
|
||||
/// <param name="parent">要查找的父Transform。</param>
|
||||
/// <param name="name">要查找的GameObject的名称。</param>
|
||||
/// <returns>所有找到的GameObject列表。</returns>
|
||||
public static List<GameObject> FindChildrenByName(Transform parent, string name)
|
||||
{
|
||||
var foundObjects = new List<GameObject>();
|
||||
FindChildrenByNameRecursive(parent, name, foundObjects);
|
||||
return foundObjects;
|
||||
}
|
||||
private static void FindChildrenByNameRecursive(Transform currentTransform, string name, List<GameObject> foundObjects)
|
||||
{
|
||||
// 检查当前对象是否是目标对象
|
||||
if (currentTransform.name.Equals(name))
|
||||
{
|
||||
foundObjects.Add(currentTransform.gameObject);
|
||||
}
|
||||
// 遍历所有子对象并递归查找
|
||||
foreach (Transform child in currentTransform)
|
||||
{
|
||||
FindChildrenByNameRecursive(child, name, foundObjects);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
67
UIFrame/Utilities/ImageLoader.cs
Normal file
67
UIFrame/Utilities/ImageLoader.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrame.Utilities
|
||||
{
|
||||
public class ImageLoader
|
||||
{
|
||||
/// <summary>
|
||||
/// 从指定文件路径加载图片并创建 Texture2D。
|
||||
/// 支持常用的图片格式 (如 .png, .jpg, .jpeg, .bmp, .tga)
|
||||
/// </summary>
|
||||
/// <param name="filePath">图片文件的绝对路径。</param>
|
||||
/// <param name="createNewTexture">如果为true,则创建一个新的Texture2D对象并加载图片数据。如果为false,它会尝试加载到默认的空白Texture2D对象上,但通常建议使用true。</param>
|
||||
/// <param name="linear">指定纹理是否加载为线性颜色空间 (true) 或 sRGB 颜色空间 (false)。</param>
|
||||
/// <returns>加载成功的 Texture2D 对象,如果失败则返回 null。</returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0206a83f56b5a794fe2f173b4a047cc4f0d4cd90")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5d69efbc3f80a5422cef0884e02fb27adf20b467")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
eb1c4a5bd10a6004eb2efc2bf4354383e0389ddf5e8c9585686a601d75e8a73a
|
||||
2fde23c3fee254f6fc8f4689686f8631f1cec9f5b900327d5b657c6830a03267
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
26cd918e8bf85dee638761fbef4e2117b1734f804498932e0dc10264a1740877
|
||||
8df4ddcbe4b7016ad51bf9e0b9ea8b606b36f4d0bbae7f1650b893a49036873e
|
||||
|
||||
Binary file not shown.
@@ -49,6 +49,12 @@
|
||||
"frameworks": {
|
||||
"netstandard2.1": {
|
||||
"targetAlias": "netstandard2.1",
|
||||
"dependencies": {
|
||||
"Lib.Harmony": {
|
||||
"target": "Package",
|
||||
"version": "[2.4.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
|
||||
@@ -1,11 +1,165 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
".NETStandard,Version=v2.1": {}
|
||||
".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"
|
||||
]
|
||||
}
|
||||
},
|
||||
"libraries": {},
|
||||
"projectFileDependencyGroups": {
|
||||
".NETStandard,Version=v2.1": []
|
||||
".NETStandard,Version=v2.1": [
|
||||
"Lib.Harmony >= 2.4.1"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\Lenovo\\.nuget\\packages\\": {},
|
||||
@@ -56,6 +210,12 @@
|
||||
"frameworks": {
|
||||
"netstandard2.1": {
|
||||
"targetAlias": "netstandard2.1",
|
||||
"dependencies": {
|
||||
"Lib.Harmony": {
|
||||
"target": "Package",
|
||||
"version": "[2.4.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "A4ZumVBkozg=",
|
||||
"dgSpecHash": "b0JcKXS9rW0=",
|
||||
"success": true,
|
||||
"projectFilePath": "D:\\vs_project\\DuckovMods\\UIFrame\\UIFrame.csproj",
|
||||
"expectedPackageFiles": [],
|
||||
"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": []
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
"restore":{"projectUniqueName":"D:\\vs_project\\DuckovMods\\UIFrame\\UIFrame.csproj","projectName":"UIFrame","projectPath":"D:\\vs_project\\DuckovMods\\UIFrame\\UIFrame.csproj","outputPath":"D:\\vs_project\\DuckovMods\\UIFrame\\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","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"}}
|
||||
"restore":{"projectUniqueName":"D:\\vs_project\\DuckovMods\\UIFrame\\UIFrame.csproj","projectName":"UIFrame","projectPath":"D:\\vs_project\\DuckovMods\\UIFrame\\UIFrame.csproj","outputPath":"D:\\vs_project\\DuckovMods\\UIFrame\\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"}}
|
||||
@@ -1 +1 @@
|
||||
17620796287866771
|
||||
17623343068138064
|
||||
Reference in New Issue
Block a user