Ver.0.3.0.33
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
@@ -10,7 +12,7 @@ namespace AibisDream.Framework
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
if (!sprite) return "";
|
||||
|
||||
|
||||
// 先读Psd的路径
|
||||
string psdPath = AssetDatabase.GetAssetPath(sprite);
|
||||
var psdResPath = GetResourcePath(psdPath);
|
||||
@@ -25,49 +27,41 @@ namespace AibisDream.Framework
|
||||
|
||||
// 提取文件名(不包括扩展名)
|
||||
var purePath = psdResPath.Substring(0, lastDotIndex);
|
||||
|
||||
|
||||
// 添加后缀
|
||||
return purePath + "/" + sprite.name;
|
||||
#else
|
||||
return null;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
private static string GetResourcePath(string absolutePath)
|
||||
{
|
||||
const string resourcesFolderName = "Resources/";
|
||||
int index = absolutePath.IndexOf(resourcesFolderName, StringComparison.Ordinal);
|
||||
var index = absolutePath.IndexOf(resourcesFolderName, StringComparison.Ordinal);
|
||||
|
||||
if (index >= 0)
|
||||
{
|
||||
// 获取 "Resources/" 之后的部分
|
||||
return absolutePath.Substring(index + resourcesFolderName.Length);
|
||||
}
|
||||
else
|
||||
{
|
||||
return absolutePath;
|
||||
}
|
||||
return index >= 0 ? absolutePath[(index + resourcesFolderName.Length)..] : absolutePath;
|
||||
}
|
||||
|
||||
public static Sprite LoadSpriteFromPsd(string path)
|
||||
{
|
||||
int lastIndex = path.LastIndexOf('/');
|
||||
string spriteName = path.Substring(lastIndex + 1);
|
||||
string resPath = path.Substring(0, lastIndex);
|
||||
|
||||
string spriteName = path[(lastIndex + 1)..];
|
||||
string resPath = path[..lastIndex];
|
||||
|
||||
// 加载
|
||||
var sprites = Resources.LoadAll<Sprite>(resPath);
|
||||
|
||||
foreach (var sprite in sprites)
|
||||
{
|
||||
if (sprite.name == spriteName)
|
||||
{
|
||||
return sprite;
|
||||
}
|
||||
}
|
||||
return sprites.FirstOrDefault(sprite => sprite.name == spriteName);
|
||||
}
|
||||
|
||||
return null;
|
||||
public static T LoadAssetSync<T>(string key) where T : UnityEngine.Object
|
||||
{
|
||||
var operation = Addressables.LoadAssetAsync<T>(key);
|
||||
|
||||
operation.WaitForCompletion();
|
||||
|
||||
return operation.Result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user