12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using System;
- using System.Collections.Generic;
- using System.Reflection;
- using UnityEngine;
- using UnityEngine.Tilemaps;
-
- namespace UnityEditor.Tilemaps
- {
- /// <summary>
- /// Use this attribute to add an option to customize how Tiles are created when dragging and dropping assets to the Tile Palette.
- /// </summary>
- /// <remarks>
- /// Append this attribute to a method that has a signature of "static TileBase CreateTile(Sprite sprite)".
- /// </remarks>
- /// <example>
- /// <code lang="cs"><![CDATA[
- /// using UnityEditor.Tilemaps;
- /// using UnityEngine;
- /// using UnityEngine.Tilemaps;
- ///
- /// public class CreateBlueTile
- /// {
- /// [CreateTileFromPalette]
- /// public static TileBase BlueTile(Sprite sprite)
- /// {
- /// var blueTile = ScriptableObject.CreateInstance<Tile>();
- /// blueTile.sprite = sprite;
- /// blueTile.name = sprite.name;
- /// blueTile.color = Color.blue;
- /// return blueTile;
- /// }
- /// }
- /// ]]></code>
- /// </example>
- [AttributeUsage(AttributeTargets.Method)]
- public class CreateTileFromPaletteAttribute : Attribute
- {
- private static List<MethodInfo> m_CreateTileFromPaletteMethods;
- internal static List<MethodInfo> 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<MethodInfo>();
- foreach (var sortingMethod in TypeCache.GetMethodsWithAttribute<CreateTileFromPaletteAttribute>())
- {
- m_CreateTileFromPaletteMethods.Add(sortingMethod);
- }
- }
- }
- }
|