Сделал GUI а Canvas.
У последнего выставлено
UI Scale Mode: Scale With Screen Size
На нём расположено некоторое количество элементов (пара кнопок, тексты, картинка).
Но у меня также есть префабы кнопок, из которых я создаю GameObject'ы вот так:
GameObject levelButton = (GameObject)Instantiate(Resources.Load("путь-к-префабу", typeof(GameObject)));
levelButton.transform.SetParent(canvas.transform);
В Play Mode всё ок.
Те элементы, которые я разместил в редакторе — с ними нормально всё.
Когда компилю и запускаю на мобилке, кодом созданныя кнопки становятся меньше чем надо, раза в три.
Конечно, это связано с тем, что у меня окошко Game маленькое, а телефон FullHD.
Но, блин, какого хрена не срабатывает UI Scale Mode: Scale With Screen Size у канваса? И почему если я на нём в редакторе размещу элементы GUI, то они норм скейлятся? А вручную заинстансенные ведут себя вот так?
Как с этим бороться? Можно, конечно, при инстансинге сразу же выставлять Scale, но что-то мне кажется, что есть штатное решение, или я что-то делаю не так.
Количество и расположение кнопок зависит от происходящего в игре, поэтому я не могу разместить их все заранее.
Гуглить это сложно по той причине, что новый GUI появился в Юнити сравнительно недавно, и теперь в результатах поиска неразбериха, постоянно попадаю на инфу о Legacy GUI.
Ответ дан в посте №3