using System; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.Tilemaps; namespace UnityEditor.Tilemaps { /// /// Use this attribute to add an option to customize how Tiles are created when dragging and dropping assets to the Tile Palette. /// /// /// Append this attribute to a method that has a signature of "static TileBase CreateTile(Sprite sprite)". /// /// /// (); /// blueTile.sprite = sprite; /// blueTile.name = sprite.name; /// blueTile.color = Color.blue; /// return blueTile; /// } /// } /// ]]> /// [AttributeUsage(AttributeTargets.Method)] public class CreateTileFromPaletteAttribute : Attribute { private static List m_CreateTileFromPaletteMethods; internal static List createTileFromPaletteMethods { get { if (m_CreateTileFromPaletteMethods == null) GetCreateTileFromPaletteAttributeMethods(); return m_CreateTileFromPaletteMethods; } } [RequiredSignature] private static TileBase CreateTile(Sprite sprite) { return null; } private static void GetCreateTileFromPaletteAttributeMethods() { m_CreateTileFromPaletteMethods = new List(); foreach (var sortingMethod in EditorAssemblies.GetAllMethodsWithAttribute()) { m_CreateTileFromPaletteMethods.Add(sortingMethod); } } } }