如何为刚在Unity3D中创建的脚本文件分配图标?

时间:2019-03-07 20:38:39

标签: c# unity3d icons assets system.reflection

我试图弄清楚如何将图标分配给刚在Unity中创建的脚本文件,但到目前为止没有成功。
我创建了这个EditorWindow类,该类允许我使用一些自定义模板创建一个新的c#类。

创建文件后,我像这样保存资产

AssetDatabase.ImportAsset(filePath, ImportAssetOptions.ForceUpdate);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();

创建脚本后,我还想自动分配自定义图标。类似于如果您创建名为GameManager的脚本,Unity会自动为该脚本文件分配自定义图标。

我创建了AssetPostprocessor类,用于检查是否在特定路径下创建了新资产,请更改该文件的图标。
问题是,当我尝试对此进行测试时,Unity崩溃了。所以我的想法有点用光了。

using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;

public class Script_Importer : AssetPostprocessor
{
    void OnPreprocessAsset()
    {
        if (assetPath.Contains("Scripts/CustomScripts/"))
        {
            AssetImporter asset = (AssetImporter)assetImporter;
            var obj = AssetImporter.GetAtPath(assetPath) as UnityEngine.Object;
            AssignLabel(obj);
        }
    }

    void AssignLabel(UnityEngine.Object obj)
    {
        Texture2D tex = EditorGUIUtility.IconContent("Script_Icon").image as Texture2D;
        Type editorGUIUtilityType = typeof(EditorGUIUtility);
        BindingFlags bindingFlags = BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic;

        object[] args = new object[] { obj, tex };
    editorGUIUtilityType.InvokeMember("SetIconForObject", bindingFlags, null, null, args);
    }
}

0 个答案:

没有答案