专门用于资源Debugger用到的父对象自动生成 DebuggerObject - 用于管理虚拟对象(只用于显示调试信息的对象)
示例#1
0
        public static void CreateDebugObject(object obj)
        {
            if (!Application.isEditor || !Application.isPlaying || IsApplicationQuited)
            {
                return;
            }

            KAsync.AddMainThreadCall(() =>
            {
                try
                {
                    var newDebugger =
                        new GameObject(string.Format("{0}-{1}", obj.ToString(), obj.GetType()))
                        .AddComponent <KObjectDebugger>();
                    newDebugger.WatchObject = obj;

                    KDebuggerObjectTool.SetParent(ContainerName, obj.GetType().Name, newDebugger.gameObject);

                    Cache[obj] = newDebugger;
                }
                catch (Exception e)
                {
                    Log.Error(e.Message);
                }
            });
        }
示例#2
0
        public static KResourceLoaderDebugger Create(string type, string url, AbstractResourceLoader loader)
        {
            if (IsApplicationQuit)
            {
                return(null);
            }

            Func <string> getName           = () => string.Format("{0}-{1}-{2}", type, url, loader.Desc);
            var           newHelpGameObject = new GameObject(getName());

            KDebuggerObjectTool.SetParent(bigType, type, newHelpGameObject);
            var newHelp = newHelpGameObject.AddComponent <KResourceLoaderDebugger>();

            newHelp.TheLoader = loader;

            loader.SetDescEvent += (newDesc) =>
            {
                if (loader.RefCount > 0)
                {
                    newHelpGameObject.name = getName();
                }
            };

            loader.DisposeEvent += () =>
            {
                if (!IsApplicationQuit)
                {
                    KDebuggerObjectTool.RemoveFromParent(bigType, type, newHelpGameObject);
                }
            };

            return(newHelp);
        }
示例#3
0
 // 可供调试删资源
 private void OnDestroy()
 {
     if (!IsRemoveFromParent)
     {
         KDebuggerObjectTool.RemoveFromParent(bigType, Type, gameObject);
         IsRemoveFromParent = true;
     }
 }
示例#4
0
 private void Update()
 {
     if (TheObject == null && !IsRemoveFromParent)
     {
         KDebuggerObjectTool.RemoveFromParent(bigType, Type, gameObject);
         IsRemoveFromParent = true;
     }
 }
示例#5
0
        public static KResoourceLoadedAssetDebugger Create(string type, string url, UnityEngine.Object theObject)
        {
            var newHelpGameObject = new GameObject(string.Format("LoadedObject-{0}-{1}", type, url));

            KDebuggerObjectTool.SetParent(bigType, type, newHelpGameObject);

            var newHelp = newHelpGameObject.AddComponent <KResoourceLoadedAssetDebugger>();

            newHelp.Type       = type;
            newHelp.TheObject  = theObject;
            newHelp.MemorySize = string.Format("{0:F5}KB", UnityEngine.Profiler.GetRuntimeMemorySize(theObject) / 1024f);
            return(newHelp);
        }