玩法示例已配置
This commit is contained in:
@@ -93,9 +93,33 @@ namespace AibisDream.Framework
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public static bool GetAssetAddressableKey(UnityEngine.Object asset, out string addressableKey)
|
||||
public static bool GetAssetAddressableKey<T>(T asset, out string addressableKey) where T : UnityEngine.Object
|
||||
{
|
||||
string path = AssetDatabase.GetAssetPath(asset);
|
||||
|
||||
// 如果是Sprite,并且是Multiple模式,则单独处理
|
||||
if (asset is Sprite sprite && AssetImporter.GetAtPath(path) is TextureImporter importer)
|
||||
{
|
||||
if (importer.textureType == TextureImporterType.Sprite && importer.spriteImportMode == SpriteImportMode.Multiple)
|
||||
{
|
||||
if (TryGetAddressableKey(path, out var addressableKeyPrefix))
|
||||
{
|
||||
addressableKey = $"{addressableKeyPrefix}[{sprite.name}]";
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
addressableKey = addressableKeyPrefix;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 其他情况正常输出
|
||||
return TryGetAddressableKey(path, out addressableKey);
|
||||
}
|
||||
|
||||
private static bool TryGetAddressableKey(string path, out string addressableKey)
|
||||
{
|
||||
// 获取其在Addressables里的路径
|
||||
var settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings;
|
||||
if (settings != null)
|
||||
@@ -103,12 +127,11 @@ namespace AibisDream.Framework
|
||||
var entry = settings.FindAssetEntry(AssetDatabase.AssetPathToGUID(path));
|
||||
if (entry != null)
|
||||
{
|
||||
Debug.Log($"Addressable Key: {entry.address}");
|
||||
addressableKey = entry.address;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Debug.Log($"资源{asset.name}不存在于Addressables中");
|
||||
Debug.Log($"资源{path}不存在于Addressables中");
|
||||
addressableKey = path;
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user