Пример #1
0
        protected void ResizeImple()
        {
            var groupType    = GameViewSizeHelper.GetCurrentGameViewSizeGroupType();
            var gameViewSize = new GameViewSizeHelper.GameViewSize();

            gameViewSize.type     = GameViewSizeHelper.GameViewSizeType.FixedResolution;
            gameViewSize.width    = Window.Orientation == Orientation.Portrait ? Width : Height;
            gameViewSize.height   = Window.Orientation == Orientation.Portrait ? Height : Width;
            gameViewSize.baseText = Label;

            if (!GameViewSizeHelper.Contains(groupType, gameViewSize))
            {
                GameViewSizeHelper.AddCustomSize(groupType, gameViewSize);
            }

            GameViewSizeHelper.ChangeGameViewSize(groupType, gameViewSize);
            Save.Set <string>(GameViewSizeChanger.Key_GameViewSizeChanger_LastLabel, Label);

            // HACK: 2フレーム待たないとSnapZoomが動作しないケースがある
            EditorApplication.delayCall += () =>
            {
                EditorApplication.delayCall += () =>
                {
                    var   flag             = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance;
                    var   assembly         = typeof(Editor).Assembly;
                    var   type             = assembly.GetType("UnityEditor.GameView");
                    var   gameView         = EditorWindow.GetWindow(type, false, "Game", false);
                    var   minScaleProperty = type.GetProperty("minScale", flag);
                    float minScale         = (float)minScaleProperty.GetValue(gameView, null);
                    type.GetMethod("SnapZoom", flag, null, new System.Type[] { typeof(float) }, null).Invoke(gameView, new object[] { minScale });
                    gameView.Repaint();
                    Window.Focus();
                };
            };
        }
 static GameViewSizeInitializer()
 {
     if (!GameViewSizeHelper.Contains(groupType, gameViewSizeType, width, height, text))
     {
         GameViewSizeHelper.AddCustomSize(groupType, gameViewSizeType, width, height, text);
     }
 }
        static IEnumerator CaptureScreenshot(int number)
        {
            string directoryName = "screenshots";

            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }

            var editorWindowAssembly = typeof(EditorWindow).Assembly;
            var currentSizeGroupType = GetCurrentSizeGroupType(editorWindowAssembly);
            var gameViewType         = editorWindowAssembly.GetType("UnityEditor.GameView");
            var gameViewWindow       = EditorWindow.GetWindow(gameViewType);

            foreach (var customSize in _customSizes)
            {
                if (!GameViewSizeHelper.Contains(currentSizeGroupType, customSize))
                {
                    GameViewSizeHelper.AddCustomSize(currentSizeGroupType, customSize);
                }

                GameViewSizeHelper.ChangeGameViewSize(currentSizeGroupType, customSize);
                var filename = Path.Combine(directoryName, $"{customSize.baseText}_{number}.png");
                EditorApplication.Step();
                EditorApplication.Step();
                ScreenCapture.CaptureScreenshot(filename);
                gameViewWindow.Repaint();
                Debug.Log($">> ScreenshotForAppStore : save to {filename}");
                yield return(null);
            }
        }
    public void PopulatePresetList()
    {
        ClearButtons();
        if (cameraOutputControl != null && cameraOutputControl.outputTextures != null)
        {
            foreach (var tex in cameraOutputControl.outputTextures)
            {
                var button = new Button();
                button.text         = tex.name;
                button.style.height = 30;
                buttons.Add(button);

                button.clicked += (() =>
                {
                    cameraOutputControl.GetComponent <RawImage>().texture = tex;
                    if (!GameViewSizeHelper.Contains(GameViewSizeGroupType.Standalone, GameViewSizeHelper.GameViewSizeType.FixedResolution, tex.width, tex.height, tex.name))
                    {
                        AddGameViewSize(tex.width, tex.height, tex.name);
                    }

                    GameViewSizeHelper.ChangeGameViewSize(GameViewSizeGroupType.Standalone, GameViewSizeHelper.GameViewSizeType.FixedResolution, tex.width, tex.height, tex.name);
                });
                //
            }
        }
        // _iEnumerator = null;
    }
Пример #5
0
        void ApplyImpl()
        {
            var gameViewSize = Convert();
            var groupType    = GetCurrentGroupType();

            if (!GameViewSizeHelper.Contains(groupType, gameViewSize))
            {
                GameViewSizeHelper.AddCustomSize(groupType, gameViewSize);
            }
            GameViewSizeHelper.ChangeGameViewSize(groupType, gameViewSize);
        }
Пример #6
0
 private static void AddResolution(GameViewSizeGroupType target, string baseText, int width, int height)
 {
     GameViewSizeHelper.AddCustomSize(
         target,
         new GameViewSizeHelper.GameViewSize {
         baseText = baseText,
         type     = GameViewSizeHelper.GameViewSizeType.FixedResolution,
         width    = width,
         height   = height
     }
         );
 }
        void OnEnable()
        {
#if UNITY_IPHONE
            selectedTab = GameViewSizeGroupType.iOS;
#elif UNITY_ANDROID
            selectedTab = GameViewSizeGroupType.Android;
#else
            selectedTab = GameViewSizeGroupType.Standalone;
#endif
            tabNames = Enum.GetNames(typeof(GameViewSizeGroupType));

            foreach (var type in Enum.GetValues(typeof(GameViewSizeGroupType)))
            {
                var groupType = (GameViewSizeGroupType)type;
                gameViewSizeMap[groupType] = GameViewSizeHelper.GetAllCustomGameViewSize((GameViewSizeGroupType)groupType);
            }
        }
Пример #8
0
        static IEnumerator CaptureScreenshot(int number)
        {
            string directoryName = "screenshots";

            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }

            var assembly  = typeof(EditorWindow).Assembly;
            var groupType = currentSizeGroupType(assembly);
            var type      = assembly.GetType("UnityEditor.GameView");
            var gameview  = EditorWindow.GetWindow(type);

            GameViewSize[] customSizes =
            {
                new GameViewSize(1242, 2688, "6.5"),
                new GameViewSize(1242, 2208, "5.5"),
                new GameViewSize(2048, 2732, "12.9"),
            };

            for (int i = 0; i < customSizes.Length; i++)
            {
                var customSize = customSizes[i];
                if (!GameViewSizeHelper.Contains(groupType, customSize))
                {
                    GameViewSizeHelper.AddCustomSize(groupType, customSize);
                }
                GameViewSizeHelper.ChangeGameViewSize(groupType, customSize);
                var filename = $"{directoryName}/{customSize.baseText}_{number}.png";
                EditorApplication.Step();
                EditorApplication.Step();
                ScreenCapture.CaptureScreenshot(filename);
                gameview.Repaint();
                Debug.Log(">> CaptureScreenshotsForAppStore : save to " + filename);
                //GameViewSizeHelper.RemoveCustomSize(groupType, customSize);
                yield return(null);
            }
        }
Пример #9
0
    static void Init()
    {
        var wide = new GameViewSizeHelper.GameViewSize
        {
            type     = GameViewSizeHelper.GameViewSizeType.FixedResolution,
            width    = 2436,
            height   = 1125,
            baseText = "iPhone X/XS Landscape"
        };
        var tall = new GameViewSizeHelper.GameViewSize
        {
            type     = GameViewSizeHelper.GameViewSizeType.FixedResolution,
            width    = 1125,
            height   = 2436,
            baseText = "iPhone X/XS Portrait"
        };

        GameViewSizeHelper.AddCustomSize(GameViewSizeGroupType.Standalone, wide);
        GameViewSizeHelper.AddCustomSize(GameViewSizeGroupType.Standalone, tall);
        GameViewSizeHelper.AddCustomSize(GameViewSizeGroupType.Android, wide);
        GameViewSizeHelper.AddCustomSize(GameViewSizeGroupType.Android, tall);
    }
 protected static void SetDefaultGameViewSize()
 {
     GameViewSizeHelper.ChangeGameViewSize(groupType, gameViewSizeType, width, height, text);
 }
        void OnGUI()
        {
            var removeTargets = new List <GameViewSizeHelper.GameViewSize>();
            var addTargets    = new List <GameViewSizeHelper.GameViewSize>();

            selectedTab = (GameViewSizeGroupType)GUILayout.Toolbar((int)selectedTab, tabNames);
            var presets     = GameViewSizePreset.GetPresets(selectedTab);
            var customSizes = gameViewSizeMap[selectedTab];

            using (var scroll = new EditorGUILayout.ScrollViewScope(scrollPosition))
            {
                scrollPosition = scroll.scrollPosition;
                EditorGUILayout.Space();
                EditorGUILayout.LabelField("■■■REGISTERED■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■", EditorStyles.boldLabel);
                EditorGUILayout.Space();
                if (customSizes.Length == 0)
                {
                    EditorGUILayout.LabelField("Nothing registered custom GameViewSize");
                }
                foreach (var gameViewSize in customSizes)
                {
                    using (new EditorGUILayout.VerticalScope("ShurikenModuleTitle"))
                    {
                        using (new EditorGUILayout.HorizontalScope())
                        {
                            if (GUILayout.Button("Remove", EditorStyles.miniButton, GUILayout.Width(55)))
                            {
                                removeTargets.Add(gameViewSize);
                            }
                            if (GUILayout.Button(gameViewSize.baseText, EditorStyles.label, GUILayout.Width(300)))
                            {
                                GameViewSizeHelper.ChangeGameViewSize(selectedTab, gameViewSize);
                            }
                            // EditorGUILayout.LabelField(gameViewSize.baseText);
                            EditorGUILayout.LabelField(string.Format("{0} × {1}", gameViewSize.width, gameViewSize.height));
                        }
                    }
                }

                EditorGUILayout.Space();
                EditorGUILayout.Space();
                EditorGUILayout.Space();
                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.LabelField("■■■PRESET■■■■■■■■■■■■■■■■■■■■■■■■", EditorStyles.boldLabel);
                    if (GUILayout.Button("Add all preset", GUILayout.Width(140)))
                    {
                        addTargets.AddRange(presets);
                    }
                    if (GUILayout.Button("Remove all preset", GUILayout.Width(140)))
                    {
                        removeTargets.AddRange(presets);
                    }
                }
                EditorGUILayout.Space();
                if (presets.Length == 0)
                {
                    EditorGUILayout.LabelField("Nothing preset GameViewSize. Please request https://github.com/Syy12345-Unity/GameViewSizeController");
                }
                foreach (var gameViewSize in presets)
                {
                    bool contains = customSizes.Any(data => GameViewSizeEqual(data, gameViewSize));
                    using (new EditorGUILayout.VerticalScope("ShurikenModuleTitle"))
                    {
                        using (new EditorGUILayout.HorizontalScope())
                        {
                            if (contains)
                            {
                                if (GUILayout.Button("", EditorStyles.label, GUILayout.Width(55)))
                                {
                                }
                            }
                            else
                            {
                                if (GUILayout.Button("Add", EditorStyles.miniButton, GUILayout.Width(55)))
                                {
                                    addTargets.Add(gameViewSize);
                                }
                            }
                            EditorGUILayout.LabelField(gameViewSize.baseText, GUILayout.Width(300));
                            EditorGUILayout.LabelField(string.Format("{0} × {1}", gameViewSize.width, gameViewSize.height));
                        }
                    }
                }

                if (removeTargets.Count != 0)
                {
                    var list = customSizes.ToList();
                    foreach (var target in removeTargets)
                    {
                        GameViewSizeHelper.RemoveCustomSize(selectedTab, target);
                        var findObj = list.FirstOrDefault(data => GameViewSizeEqual(data, target));
                        if (findObj != null)
                        {
                            list.Remove(findObj);
                        }
                    }
                    gameViewSizeMap[selectedTab] = list.ToArray();
                }

                if (addTargets.Count != 0)
                {
                    var list = customSizes.ToList();
                    foreach (var target in addTargets)
                    {
                        var findObj = list.FirstOrDefault(data => GameViewSizeEqual(data, target));
                        if (findObj == null)
                        {
                            GameViewSizeHelper.AddCustomSize(selectedTab, target);
                            list.Add(target);
                        }
                    }
                    gameViewSizeMap[selectedTab] = list.ToArray();
                }
                EditorGUILayout.Space();
            }
            EditorGUILayout.Space();
        }
 private static void AddGameViewSize(int width, int height, string name)
 {
     GameViewSizeHelper.AddCustomSize(GameViewSizeGroupType.Standalone, GameViewSizeHelper.GameViewSizeType.FixedResolution, width, height, name);
 }