我试图弄清楚如何将图标分配给刚在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);
}
}