using UnityEngine; using UnityEditor; using System.Reflection; using System; //Special thanks to Shamanim for solution //https://forum.unity.com/threads/sorta-solved-check-if-gameobject-is-dirty.504894/#post-3967810 public class IsDirtyUtility { //Cached Value private static Func _isDirtyCallback; private static Func IsDirtyCallback { get { if(_isDirtyCallback == null) { //Reflection MethodInfo isDirtyMethod = typeof(EditorUtility).GetMethod("IsDirty", BindingFlags.NonPublic | BindingFlags.Static); _isDirtyCallback = (Func)Delegate.CreateDelegate(typeof(Func), null, isDirtyMethod); } return _isDirtyCallback; } } public static bool IsDirty(int instanceID) { return IsDirtyCallback(instanceID); } public static bool IsDirty(GameObject gameObject) { return IsDirtyCallback(gameObject.GetInstanceID()); } }