Тут есть несколько моментов.
1. Перевожу на русский, что вы пытаетесь сделать:
Взять текущее разрешение экрана (не окна Game, а именно что экрана) - что значит, что у вас в консоли должно выводиться 1920x1080 даже при 1152x864. Если вам нужен размер именно окна Game, то его размеры такие:
int screenWidth = Screen.width;
int screenHeight = Screen.height;
2. Единственный сценарий зачем это всё может быть надо что пришёл мне в голову - вы хотите заблочить клики вне диалогового окна за счёт непрозрачного для нажатий фона, но так как фон находится в префабе, вам приходится мучаться с его растяжением на весь экран.
Если я вдруг не ошибся, то есть решение проще.
Решение:
Создаёте префаб изначально растянутый на весь экран. Внутри него создаёте пустой объект, который и будете включать и выключать, опять же, растянутый на весь экран. А внутри уже нужный вам фон (тоже растянутый) и панелька с текстом и кнопками.
Таким образом вам достаточно просто включать выключать пустышку, которая будет работать и с фоном и с панелькой. Вот пример:
3. Непрошенный совет. Это касается не столько функциональности, сколько архитектуры кода. Если вы хотите качественно улучшить скрипты, попробуйте по мере возможности сразу хардкодить ссылки, тем более что это части одного объекта.
Вот пример:
Было
public class DialogWindowController : MonoBehaviour {
private GameObject backgroundPanel;
RectTransform backgroundPanelRectTransform;
void OnEnable() {
// Получаем ссылку на панель и устанавливаем её размер на весь экран.
backgroundPanel = transform.Find("BackgroundPanel").gameObject;
backgroundPanelRectTransform = GetComponent<RectTransform>();
backgroundPanelRectTransform.sizeDelta = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height);
// Отладка. Разрешение совпадает с реальным. Всё верно.
string str = Screen.currentResolution.width + "x" + Screen.currentResolution.height;
Debug.Log(str);
using (StreamWriter writer = new StreamWriter("test.txt")) {
writer.WriteLine(str);
}
}
}
Стало:
public class DialogWindowController : MonoBehaviour {
[SerializeField] private RectTransform _background;
void OnEnable() {
_background.sizeDelta = new Vector2(Screen.currentResolution.width, Screen.currentResolution.height);
// Отладка. Разрешение совпадает с реальным. Всё верно.
string str = Screen.currentResolution.width + "x" + Screen.currentResolution.height;
Debug.Log(str);
using (StreamWriter writer = new StreamWriter("test.txt")) {
writer.WriteLine(str);
}
}
}