mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-20 11:27:14 +08:00
(client) feat:健康给予,路径优化,结算界面,商店界面 (#60)
Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com> Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/60
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
using System.Xml.Linq;
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using Object = UnityEngine.Object;
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
|
||||
// 未在提供代码段中使用,但保留以便与原始上下文保持一致
|
||||
|
||||
@@ -19,7 +19,6 @@ namespace Configs
|
||||
{
|
||||
public static class ConfigProcessor
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 获取指定路径下的所有xml文件
|
||||
/// </summary>
|
||||
@@ -30,7 +29,6 @@ namespace Configs
|
||||
var xmlFilePaths = new List<string>();
|
||||
|
||||
foreach (var path in paths)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 检查目录是否存在
|
||||
@@ -51,7 +49,6 @@ namespace Configs
|
||||
// 优化错误信息,明确是哪个路径出现问题
|
||||
Debug.LogError($"获取路径 '{path}' 下的XML文件时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
return xmlFilePaths;
|
||||
}
|
||||
@@ -125,13 +122,14 @@ namespace Configs
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用于加载指定路径下的所有资源,并返回资源名称和加载好的资源的键值对。
|
||||
/// 用于加载指定路径下的所有资源,并返回资源名称和加载好的资源的键值对。
|
||||
/// </summary>
|
||||
/// <typeparam name="T">资源类型</typeparam>
|
||||
/// <param name="path">资源路径(相对于 Resources 文件夹)</param>
|
||||
/// <returns>字典,键为资源名称,值为加载好的资源</returns>
|
||||
public static Dictionary<string, T> LoadResources<T>(string path) where T : UnityEngine.Object
|
||||
public static Dictionary<string, T> LoadResources<T>(string path) where T : Object
|
||||
{
|
||||
// 创建一个字典来存储资源名称和加载好的资源
|
||||
var resourceDict = new Dictionary<string, T>();
|
||||
@@ -140,20 +138,18 @@ namespace Configs
|
||||
var resources = Resources.LoadAll<T>(path);
|
||||
|
||||
foreach (var resource in resources)
|
||||
{
|
||||
if (resource != null)
|
||||
{
|
||||
// 获取资源名称并存入字典
|
||||
var resourceName = resource.name;
|
||||
resourceDict[resourceName] = resource;
|
||||
}
|
||||
}
|
||||
|
||||
return resourceDict;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从外部指定文件中加载图片
|
||||
/// 从外部指定文件中加载图片
|
||||
/// </summary>
|
||||
/// <param name="filePath">图片文件的完整路径</param>
|
||||
/// <returns>加载成功的 Texture2D 对象,或加载失败时返回 null</returns>
|
||||
@@ -179,7 +175,7 @@ namespace Configs
|
||||
// 使用 using 自动管理 FileStream 的生命周期
|
||||
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
bytes = new byte[fs.Length]; // 创建一个字节数组来存储文件内容
|
||||
bytes = new byte[fs.Length]; // 创建一个字节数组来存储文件内容
|
||||
fs.Read(bytes, 0, bytes.Length); // 读取文件内容到字节数组
|
||||
}
|
||||
}
|
||||
@@ -200,14 +196,13 @@ namespace Configs
|
||||
|
||||
return texture; // 返回加载成功的 Texture2D 对象
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("图片加载失败,请检查文件格式是否正确!");
|
||||
return null;
|
||||
}
|
||||
|
||||
Debug.LogError("图片加载失败,请检查文件格式是否正确!");
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取指定目录下所有匹配后缀名的文件路径(可递归)
|
||||
/// 获取指定目录下所有匹配后缀名的文件路径(可递归)
|
||||
/// </summary>
|
||||
/// <param name="directoryPath">目标文件夹路径</param>
|
||||
/// <param name="extensions">后缀名列表(如 ["txt", "jpg"])</param>
|
||||
@@ -240,10 +235,7 @@ namespace Configs
|
||||
foreach (var file in files)
|
||||
{
|
||||
var ext = Path.GetExtension(file).TrimStart('.').ToLower();
|
||||
if (normalizedExtensions.Contains(ext))
|
||||
{
|
||||
result.Add(file);
|
||||
}
|
||||
if (normalizedExtensions.Contains(ext)) result.Add(file);
|
||||
}
|
||||
}
|
||||
catch (UnauthorizedAccessException ex)
|
||||
@@ -254,14 +246,15 @@ namespace Configs
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据文件路径推断音频类型。
|
||||
/// 根据文件路径推断音频类型。
|
||||
/// </summary>
|
||||
/// <param name="filePath">音频文件的完整路径。</param>
|
||||
/// <returns>推断出的 AudioType,如果无法推断则返回 AudioType.UNKNOWN。</returns>
|
||||
private static AudioType GetAudioTypeFromFilePath(string filePath)
|
||||
{
|
||||
string ext = Path.GetExtension(filePath)?.ToLower(); // 获取扩展名并转小写
|
||||
var ext = Path.GetExtension(filePath)?.ToLower(); // 获取扩展名并转小写
|
||||
switch (ext)
|
||||
{
|
||||
case ".wav": return AudioType.WAV;
|
||||
@@ -274,9 +267,10 @@ namespace Configs
|
||||
return AudioType.UNKNOWN; // 让Unity尝试自动检测,但成功率可能不如指定类型高
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从外部指定文件中异步加载音频。
|
||||
/// 注意:此方法是异步的,需要使用 await 调用。在Unity主线程中调用以避免潜在的线程问题。
|
||||
/// 从外部指定文件中异步加载音频。
|
||||
/// 注意:此方法是异步的,需要使用 await 调用。在Unity主线程中调用以避免潜在的线程问题。
|
||||
/// </summary>
|
||||
/// <param name="filePath">音频文件的完整路径。</param>
|
||||
/// <returns>Task,其结果为加载成功的 AudioClip 对象,或加载失败时返回 null。</returns>
|
||||
@@ -295,11 +289,11 @@ namespace Configs
|
||||
}
|
||||
|
||||
// UnityWebRequest需要使用file://协议来访问本地文件
|
||||
string uri = "file://" + Path.GetFullPath(filePath);
|
||||
var uri = "file://" + Path.GetFullPath(filePath);
|
||||
// 根据文件扩展名推断音频类型
|
||||
AudioType audioType = GetAudioTypeFromFilePath(filePath);
|
||||
var audioType = GetAudioTypeFromFilePath(filePath);
|
||||
|
||||
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(uri, audioType))
|
||||
using (var www = UnityWebRequestMultimedia.GetAudioClip(uri, audioType))
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -312,21 +306,18 @@ namespace Configs
|
||||
// 检查请求结果
|
||||
// www.isNetworkError 或 www.isHttpError 在较新的Unity版本中已弃用,
|
||||
// 推荐使用 www.result。
|
||||
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
|
||||
if (www.result == UnityWebRequest.Result.ConnectionError ||
|
||||
www.result == UnityWebRequest.Result.ProtocolError)
|
||||
{
|
||||
Debug.LogError($"加载音频文件 '{filePath}' 失败: {www.error}");
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 获取下载的AudioClip
|
||||
AudioClip clip = DownloadHandlerAudioClip.GetContent(www);
|
||||
if (clip == null)
|
||||
{
|
||||
Debug.LogError($"未能从文件 '{filePath}' 获取 AudioClip 内容,请检查文件是否损坏或格式是否支持 ({audioType} 类型).");
|
||||
}
|
||||
return clip;
|
||||
}
|
||||
|
||||
// 获取下载的AudioClip
|
||||
var clip = DownloadHandlerAudioClip.GetContent(www);
|
||||
if (clip == null)
|
||||
Debug.LogError($"未能从文件 '{filePath}' 获取 AudioClip 内容,请检查文件是否损坏或格式是否支持 ({audioType} 类型).");
|
||||
return clip;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -335,6 +326,5 @@ namespace Configs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user