阶段性完成
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
|
||||
namespace LeTai.Asset.TranslucentImage.Editor
|
||||
{
|
||||
class ScenceGizmoAutoDisable : AssetPostprocessor
|
||||
{
|
||||
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
||||
{
|
||||
if (!importedAssets.Any(p => p.Contains("TranslucentImage")))
|
||||
return;
|
||||
|
||||
var structAnnotation = Type.GetType("UnityEditor.Annotation, UnityEditor");
|
||||
if (structAnnotation == null) return;
|
||||
|
||||
var fieldClassId = structAnnotation.GetField("classID");
|
||||
var fieldScriptClass = structAnnotation.GetField("scriptClass");
|
||||
var fieldFlags = structAnnotation.GetField("flags");
|
||||
var fieldIconEnabled = structAnnotation.GetField("iconEnabled");
|
||||
|
||||
Type classAnnotationUtility = Type.GetType("UnityEditor.AnnotationUtility, UnityEditor");
|
||||
if (classAnnotationUtility == null) return;
|
||||
|
||||
var methodGetAnnotations = classAnnotationUtility.GetMethod("GetAnnotations", BindingFlags.NonPublic | BindingFlags.Static);
|
||||
if (methodGetAnnotations == null) return;
|
||||
var methodSetIconEnabled = classAnnotationUtility.GetMethod("SetIconEnabled", BindingFlags.NonPublic | BindingFlags.Static);
|
||||
if (methodSetIconEnabled == null) return;
|
||||
|
||||
Array annotations = (Array)methodGetAnnotations.Invoke(null, null);
|
||||
foreach (var a in annotations)
|
||||
{
|
||||
string scriptClass = (string)fieldScriptClass.GetValue(a);
|
||||
|
||||
// built in types
|
||||
if (string.IsNullOrEmpty(scriptClass)) continue;
|
||||
|
||||
int classId = (int)fieldClassId.GetValue(a);
|
||||
int flags = (int)fieldFlags.GetValue(a);
|
||||
int iconEnabled = (int)fieldIconEnabled.GetValue(a);
|
||||
|
||||
const int maskHasIcon = 1;
|
||||
bool hasIconFlag = (flags & maskHasIcon) == maskHasIcon;
|
||||
|
||||
if (hasIconFlag
|
||||
&& iconEnabled != 0
|
||||
&& scriptClass.Contains("TranslucentImage"))
|
||||
{
|
||||
methodSetIconEnabled.Invoke(null, new object[] { classId, scriptClass, 0 });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user