unityzgy/.svn/pristine/68/68c9239c3399c1ffff11900624839a01b318205d.svn-base
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

84 lines
2.8 KiB
Plaintext

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;
using XFramework;
public static class OutSpriteLoader
{
public static Dictionary<string, Sprite> loadedSpriteDic = new Dictionary<string, Sprite>();
public static Dictionary<string, Texture2D> loadedTextureDic = new Dictionary<string, Texture2D>();
//public async Task<Texture> LoadTexture(string path)
//{
// //if (OutTextureManager.loadedTexture.ContainsKey(path))
// // loadedAction?.Invoke(OutTextureManager.loadedTexture[path]);
// //else
// //{
// var request = UnityWebRequestTexture.GetTexture(path);
// await request;
// Texture texture=null;
// if (DownloadHandlerTexture.GetContent(request) != null)
// {
// texture = DownloadHandlerTexture.GetContent(request);
// OutTextureManager.loadedTexture.Add(path, texture);
// }
// else
// {
// Debug.Log("图片加载失败,请确认名称是否正确");
// }
// //loadedAction?.Invoke(texture);
// //}
//}
public static async Task<Texture2D> LoadTexture(string path)
{
if (loadedTextureDic.ContainsKey(path))
return loadedTextureDic[path];
var task = LoadAsyncTexture(path);
Task<Texture2D> t = await Task.WhenAny(task);
return t.Result;
}
public static async Task<Sprite> LoadSprite(string path)
{
if (loadedSpriteDic.ContainsKey(path))
return loadedSpriteDic[path];
var task = LoadAsyncSprite(path);
Task<Sprite> t = await Task.WhenAny(task);
return t.Result;
}
static async Task<Sprite> LoadAsyncSprite(string url)
{
//string path = Path.Combine(Application.streamingAssetsPath, url + end);
var getRequest = UnityWebRequest.Get(url);
await getRequest.SendWebRequest();
byte[] imgData = getRequest.downloadHandler.data;
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(imgData);
Vector2 pivot = new Vector2(0.5f, 0.5f);
Sprite sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), pivot, 100.0f);
loadedSpriteDic.Add(url, sprite);
return sprite;
}
static async Task<Texture2D> LoadAsyncTexture(string url)
{
//string path = Path.Combine(Application.streamingAssetsPath, url + end);
var getRequest = UnityWebRequestTexture.GetTexture(url);
await getRequest.SendWebRequest();
Texture2D tex = DownloadHandlerTexture.GetContent(getRequest);
loadedTextureDic.Add(url, tex);
return tex;
}
}