Страница 1 из 1

Как программно узнать Aspect Ratio окна Game View? [Решено]

СообщениеДобавлено: 21 ноя 2014, 00:01
ABCpt
Можно вручную установить соотношение сторон окна Game, но возможно ли затем программно узнать эти параметры? (нужно для теста разных соотношений, но не для конечного продукта)

Screen.width/Screen.height не предлагать, ибо они показывают фактические(ресайженные) размеры окна, а не указанные в Game View. Пытался искать здесь UnityEditor.* , но ничего не нашлось, на просторах интернета тоже как-то глухо, возможно не так ищу... :-?

Ну и, собственно, вопрос: Возможно ли программно узнать Aspect Ratio окна Game View, и если Да, то как это сделать? :-\

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 00:22
DbIMok
в смысле аспект "ресайженного" не соответствует заданному или в чем вопрос?

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 01:23
ABCpt
К примеру, дисплей ретина 1536x2048 в мой монитор не поместится, поэтому Screen всегда будет указывать высоту/ширину меньше необходимой(в примере ниже это 315х420). Мне же нужно получить значения 1536 и 2048, которые я указал в Game.

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 02:10
DbIMok
почему вы хотите получить значения, написанные вами в окне GameView, а не написанные вами же в скрипте, конфигурационном файле либо где либо еще? их наверное можно достать через жрефлексию, но в этом нет никакого смысла.

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 11:34
ABCpt
DbIMok писал(а):почему вы хотите получить значения, написанные вами в окне GameView

Для задания камере orthographicSize в зависимости от полученных значений из GameView для теста картинки для разных разрешений, в игре же эти параметры будут браться из Screen.

DbIMok писал(а):а не написанные вами же в скрипте, конфигурационном файле либо где либо еще?

Тогда придется каждый раз вручную указывать соотношение сторон соответствующее заданным в редакторе, т.к. вопрос как дотянуться до этих значений из окна Game остался не решенным. Указывая вручную там и там я получаю "правильную картинку", но хотелось автоматизировать.

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 16:11
DbIMok
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;

public class TestGameView : ScriptableObject {

        [MenuItem("Test/GameViewSize")]
        static void Init() {
                Debug.Log(GetCurrentGameViewSize().ToString());
        }

        static Vector2 GetCurrentGameViewSize() {
                System.Type gameViewType = System.Type.GetType("UnityEditor.GameView,UnityEditor");
                System.Reflection.MethodInfo GetMainGameView = gameViewType.GetMethod("GetMainGameView", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic);
                object mainGameViewInst = GetMainGameView.Invoke(null, null);
                if (mainGameViewInst != null) {
                        System.Reflection.PropertyInfo currentGameViewSize = gameViewType.GetProperty("currentGameViewSize",
                                System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public |
                                System.Reflection.BindingFlags.NonPublic);
                        object gameViewSize = currentGameViewSize.GetValue(mainGameViewInst, null);
                        System.Type gameViewSizeType = gameViewSize.GetType();
                        int width = (int)gameViewSizeType.GetProperty("width").GetValue(gameViewSize, null);
                        int height = (int)gameViewSizeType.GetProperty("height").GetValue(gameViewSize, null);
                        return new Vector2(width, height);
                } else {
                        Debug.LogWarning("mainGameViewInst = null");
                        return new Vector2(0, 0);
                }
        }
}

Re: Как программно узнать Aspect Ratio окна Game View?

СообщениеДобавлено: 21 ноя 2014, 16:46
ABCpt
Ого! Я бы до такого не додумался. Все работает, большое спасибо!