SearchContextAttribute.instantiableProviders

public Type[] instantiableProviders;

Description

Search provider concrete types that will be instantiated and assigned to the Object Picker search context.

#if !UNITY_EDITOR_OSX // Disabled for Instability https://jira.unity3d.com/browse/UUM-79397
    [SearchContext("my search", new[] { typeof(MyTextureProvider) })] public Texture2D mySpecialTexture2D;
#endif

    class MyTextureProvider : SearchProvider
    {
        static string ProviderId = "myTexture";

        public MyTextureProvider()
            : base(ProviderId)
        {
            fetchItems = (context, items, provider) => SearchItems(context, provider);
            fetchLabel = (item, context) =>
            {
                var assetPath = AssetDatabase.GUIDToAssetPath((string)item.data);
                return GetNameFromPath(assetPath);
            };
            fetchThumbnail = (item, context) =>
            {
                var obj = toObject(item, typeof(Texture2D));
                return AssetPreview.GetAssetPreview(obj);
            };
            toObject = (item, type) =>
            {
                var assetPath = AssetDatabase.GUIDToAssetPath((string)item.data);
                return AssetDatabase.LoadAssetAtPath(assetPath, type);
            };
        }

        static IEnumerator SearchItems(SearchContext context, SearchProvider provider)
        {
            foreach (var texture2DGuid in GetMyTextures())
            {
                yield return provider.CreateItem(context, texture2DGuid, texture2DGuid.GetHashCode(), null, null, null, texture2DGuid);
            }
        }

        static IEnumerable<string> GetMyTextures()
        {
            return AssetDatabase.FindAssets("t:texture2d");
        }

        static string GetNameFromPath(string path)
        {
            var lastSep = path.LastIndexOf('/');
            if (lastSep == -1)
                return path;

            return path.Substring(lastSep + 1);
        }
    }

Did you find this page useful? Please give it a rating: