2025-05-18 01:04:31 +08:00

82 lines
1.9 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace Unity.Notifications
{
[System.Serializable]
internal class DrawableResourceData
{
public string Id;
public NotificationIconType Type;
public Texture2D Asset;
private bool m_IsValid = false;
private List<string> m_Errors = null;
private Texture2D m_PreviewTexture;
public bool IsValid
{
get
{
if (m_IsValid == false && m_Errors == null)
Verify();
return m_IsValid;
}
}
public string[] Errors
{
get
{
if (m_IsValid == false && m_Errors == null)
Verify();
return m_Errors.ToArray();
}
}
public Texture2D GetPreviewTexture(bool update)
{
if (Asset == null)
return null;
if (m_IsValid && (m_PreviewTexture == null || update))
m_PreviewTexture = TextureAssetUtils.ProcessTextureForType(Asset, Type);
return m_PreviewTexture;
}
internal bool Initialized()
{
return !string.IsNullOrEmpty(Id) && Asset != null;
}
public void Clean()
{
m_IsValid = false;
m_Errors = null;
m_PreviewTexture = null;
}
public bool Verify()
{
m_IsValid = TextureAssetUtils.VerifyTextureByType(Asset, Type, out m_Errors);
return m_IsValid;
}
public string GenerateErrorString()
{
var errors = Errors;
var errorString = string.Empty;
for (var i = 0; i < errors.Length; i++)
{
errorString += string.Format("{0}{1}", errors[i], i + 1 >= errors.Length ? "." : ", ");
}
return errorString;
}
}
}