WuhuIslandTesting/Library/PackageCache/com.unity.addressables@1.21.12/Runtime/AssetReferenceUIRestriction.cs

96 lines
3.1 KiB
C#
Raw Normal View History

2025-01-07 02:06:59 +01:00
using System;
using System.Text;
using Object = UnityEngine.Object;
namespace UnityEngine
{
/// <summary>
/// Used to restrict an AssetReference field or property to only allow items wil specific labels. This is only enforced through the UI.
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public class AssetReferenceUIRestriction : Attribute
{
/// <summary>
/// Validates that the referenced asset allowable for this asset reference.
/// </summary>
/// <param name="obj">The Object to validate.</param>
/// <returns>Whether the referenced asset is valid.</returns>
public virtual bool ValidateAsset(Object obj)
{
return true;
}
/// <summary>
/// Validates that the referenced asset allowable for this asset reference.
/// </summary>
/// <param name="path">The path to the asset in question.</param>
/// <returns>Whether the referenced asset is valid.</returns>
public virtual bool ValidateAsset(string path)
{
return true;
}
}
/// <summary>
/// Used to restrict an AssetReference field or property to only allow items wil specific labels. This is only enforced through the UI.
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public sealed class AssetReferenceUILabelRestriction : AssetReferenceUIRestriction
{
/// <summary>
/// Stores the labels allowed for the AssetReference.
/// </summary>
public string[] m_AllowedLabels;
/// <summary>
/// Stores the allowed labels formatted as a string.
/// </summary>
public string m_CachedToString;
/// <summary>
/// Creates a new AssetReferenceUILabelRestriction object.
/// </summary>
/// <param name="allowedLabels">The labels allowed for the AssetReference.</param>
public AssetReferenceUILabelRestriction(params string[] allowedLabels)
{
m_AllowedLabels = allowedLabels;
}
/// <inheritdoc/>
public override bool ValidateAsset(Object obj)
{
return true;
}
/// <inheritdoc/>
public override bool ValidateAsset(string path)
{
return true;
}
/// <summary>
/// Converts the information about the allowed labels to a formatted string.
/// </summary>
/// <returns>Returns information about the allowed labels as a string.</returns>
public override string ToString()
{
if (m_CachedToString == null)
{
StringBuilder sb = new StringBuilder();
bool first = true;
foreach (var t in m_AllowedLabels)
{
if (!first)
sb.Append(',');
first = false;
sb.Append(t);
}
m_CachedToString = sb.ToString();
}
return m_CachedToString;
}
}
}