コード例 #1
0
            public override void Deserialize(BinaryReader reader)
            {
                path = reader.ReadString();
                Scene scene  = default(Scene);
                bool  loaded = false;

                for (int i = EditorSceneManager.sceneCount - 1; i >= 0; i--)
                {
                    var iscene = EditorSceneManager.GetSceneAt(i);
                    if (iscene.IsValid() && Equals(iscene.path, path))
                    {
                        scene  = iscene;
                        loaded = true;
                        break;
                    }
                }
                if (!loaded)
                {
                    scene = EditorSceneManager.OpenScene(path, SceneManagement.OpenSceneMode.Additive);
                }
                var gos    = scene.GetRootGameObjects();
                var length = reader.ReadInt32();

                for (int i = 0; i < length; i++)
                {
                    goLog.go = gos[i];
                    goLog.Deserialize(reader);
                }
                EditorSceneManager.SaveScene(scene);
                if (!loaded)
                {
                    EditorSceneManager.CloseScene(scene, true);
                }
            }
コード例 #2
0
            public override void Serialize(BinaryWriter writer)
            {
                writer.Write(path);
                Scene scene  = default(Scene);
                bool  loaded = false;

                for (int i = EditorSceneManager.sceneCount - 1; i >= 0; i--)
                {
                    var iscene = EditorSceneManager.GetSceneAt(i);
                    if (iscene.IsValid() && Equals(iscene.path, path))
                    {
                        scene  = iscene;
                        loaded = true;
                        break;
                    }
                }
                if (!loaded)
                {
                    scene = EditorSceneManager.OpenScene(path, SceneManagement.OpenSceneMode.Additive);
                }
                var gos = scene.GetRootGameObjects();

                writer.Write(gos.Length);
                for (int i = 0; i < gos.Length; i++)
                {
                    goLog.go = gos[i];
                    goLog.Serialize(writer);
                }
                EditorSceneManager.SaveScene(scene);
                if (!loaded)
                {
                    EditorSceneManager.CloseScene(scene, true);
                }
            }
コード例 #3
0
ファイル: AtlasPacker.cs プロジェクト: SylarLi/AtlaS
 private static void RefreshUI()
 {
     for (int i = EditorSceneManager.sceneCount - 1; i >= 0; i--)
     {
         var iscene = EditorSceneManager.GetSceneAt(i);
         if (iscene.IsValid())
         {
             var roots = iscene.GetRootGameObjects();
             var list  = new List <Image>();
             foreach (var go in roots)
             {
                 if (go.activeSelf)
                 {
                     var comp = go.GetComponent <Image>();
                     if (comp != null)
                     {
                         list.Add(comp);
                     }
                     list.AddRange(go.GetComponentsInChildren <Image>(false));
                 }
             }
             foreach (var image in list)
             {
                 var sprite = image.sprite;
                 if (sprite != null &&
                     sprite.type == UnityEngine.UI.Sprite.Type.Atlas)
                 {
                     sprite.SetSpriteDirty();
                     image.SetAllDirty();
                 }
             }
         }
     }
 }
コード例 #4
0
            public override void Translate()
            {
                Scene scene  = default(Scene);
                bool  loaded = false;

                for (int i = EditorSceneManager.sceneCount - 1; i >= 0; i--)
                {
                    var iscene = EditorSceneManager.GetSceneAt(i);
                    if (iscene.IsValid() && Equals(iscene.path, path))
                    {
                        scene  = iscene;
                        loaded = true;
                        break;
                    }
                }
                if (!loaded)
                {
                    scene = EditorSceneManager.OpenScene(path, SceneManagement.OpenSceneMode.Additive);
                }
                var gos        = scene.GetRootGameObjects();
                var collectors = new List <ICollector>();

                for (int i = 0; i < gos.Length; i++)
                {
                    var collector = new GameObjectCollector();
                    collector.go = gos[i];
                    collector.Collect();
                    collectors.Add(collector);
                }
                Util.RebindThenTranslate(collectors, sprites);
                EditorSceneManager.SaveScene(scene);
                if (!loaded)
                {
                    EditorSceneManager.CloseScene(scene, true);
                }
            }
コード例 #5
0
            public override void Collect()
            {
                var   list   = new List <UnityEngine.UI.Sprite>();
                Scene scene  = default(Scene);
                bool  loaded = false;

                for (int i = EditorSceneManager.sceneCount - 1; i >= 0; i--)
                {
                    var iscene = EditorSceneManager.GetSceneAt(i);
                    if (iscene.IsValid() && Equals(iscene.path, path))
                    {
                        scene  = iscene;
                        loaded = true;
                        break;
                    }
                }
                if (!loaded)
                {
                    scene = EditorSceneManager.OpenScene(path, SceneManagement.OpenSceneMode.Additive);
                }
                var gos = scene.GetRootGameObjects();

                for (int i = 0; i < gos.Length; i++)
                {
                    var goCollector = new GameObjectCollector();
                    goCollector.go = gos[i];
                    goCollector.Collect();
                    list.AddRange(goCollector.sprites);
                }
                EditorSceneManager.SaveScene(scene);
                if (!loaded)
                {
                    EditorSceneManager.CloseScene(scene, true);
                }
                sprites = list.ToArray();
            }