Я пытаюсь выяснить, как назначить значок файлу скрипта, который только что был создан в 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);
}
}