Вывод текста.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вывод текста.

Сообщение ustas235 03 мар 2019, 12:48

Добрый день.
Пытаюсь освоить Юнити, возникают глупые вопросы, которые не знаю как решить. Один из них - как организовать вывод текста в 2д игрушке?
Суть: есть игровое поле, на поле есть список игроков. В этом списке надо выводить счет каждого игрока, ну типа такого:
Изображение
Камера двигается по полю, но текст всегда должен оставаться напротив своих игроков. Мне для текста нужно создавать отдельный Canvas в нем уже UI->Text? Или нужно делать пустой объект, в нем свой Canvas, а уже в в нем UI->Text? Или текст выводить на том Canvas'е что уже есть на поле? Я пытаюсь по всякому, но то текст двигается вместе с камерой, то этот текст растягивает так сильно, что он становится расплывчатый, то его не видно вовсе. Как правильно организовать вывод текста в моем случае?
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Saltant 03 мар 2019, 13:31

Сделай текст "внутри" игрока и он будет ездить вместе с ним.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 13:34

Мне нужно, чтобы текст висел в одном месте. Когда размещаю текст на другом объекте со своим Canvas'ом, то текст либо не виден, либо он сильно растягивается и размывается (размер шрифта 14):
Изображение
Последний раз редактировалось ustas235 03 мар 2019, 13:41, всего редактировалось 1 раз.
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение alew 03 мар 2019, 13:34

Синтаксис:
Используется csharp
private void OnGUI()
    {
        string text = "posX = " + transform.position.x.ToString() + "\nposY = " + transform.position.y.ToString() ;
        Vector3 posDraw = Camera.main.WorldToScreenPoint(transform.position);
        posDraw.y = Screen.height - posDraw.y;
        GUI.Label(new Rect(posDraw.x, posDraw.y, 300, 100), text);
    }
 


Что бы висел используй Label
alew
UNIт
 
Сообщения: 76
Зарегистрирован: 23 ноя 2018, 19:59

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 13:53

Справка пишет, что GUI Text относится к устаревшим методам рисования и рекомендует ими не пользоваться. Хотелось бы разобраться как правильно работать на современной системе пользовательского интерфейса.
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Xtir 03 мар 2019, 14:00

Что-то я ничего не понял. Так текст должен висеть возле игрока или где-то в углу?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 14:24

Текст должен всегда висеть на одном месте - напротив имен соотв. игроков. Камера вместе с игроками двигается по полю, но счет всегда в одном месте, например слева в углу игрового поля.
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Saltant 03 мар 2019, 14:28

ustas235 писал(а):Мне нужно, чтобы текст висел в одном месте. Когда размещаю текст на другом объекте со своим Canvas'ом, то текст либо не виден, либо он сильно растягивается и размывается (размер шрифта 14):
Изображение

Так чтоль нужно? https://puu.sh/CUqTy/a1f1e5301f.gif
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 15:47

Очень похоже. Текст должен быть привязан к игровому полю, а не к экрану. Поле больше экрана, и когда камера с игроками уходит в сторону, счет может скрыться за границами экрана. если у тебя так происходит, то это то что мне нужно.
Поясни пожалуйста, я не совсем понял из гифки:
LoadScreen это обыкновенный объект, в котором размещен Panel?
А в Panel три объекта плеер, внутри каждого по объекту Score? Все это обычные объекты?(не UI?)
А текст к эти объектам просто как отдельный компонент добавлен?
А где Camvas где и каковы его настройки? Когда я создаю объекты Panel, у меня автоматически появляются объекты Canvas.
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Saltant 03 мар 2019, 15:55

ustas235 писал(а):Очень похоже. Текст должен быть привязан к игровому полю, а не к экрану. Поле больше экрана, и когда камера с игроками уходит в сторону, счет может скрыться за границами экрана. если у тебя так происходит, то это то что мне нужно.
Поясни пожалуйста, я не совсем понял из гифки:
LoadScreen это обыкновенный объект, в котором размещен Panel?
А в Panel три объекта плеер, внутри каждого по объекту Score? Все это обычные объекты?(не UI?)
А текст к эти объектам просто как отдельный компонент добавлен?
А где Camvas где и каковы его настройки? Когда я создаю объекты Panel, у меня автоматически появляются объекты Canvas.

LoadingScreen это Canvas, в котором создана Panel в которую созданы 3 Text поля в которые вложены в каждый еще по одному Text полю. Всё создается через меню UI

P.S мне не совсем понятно что в твоем понимании значит "игровое поле" и что значит "поле больше экрана".
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 16:08

Примерно так:
Изображение[/img]
У меня большое поле, и оно не влазит целиком на экран телефона. Если же его запихнуть, то элементы поля будут не читаемы.
Последний раз редактировалось ustas235 03 мар 2019, 16:13, всего редактировалось 1 раз.
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Saltant 03 мар 2019, 16:11

ustas235 писал(а):Примерно так:
Изображение[/img]
У меня большое поле, и оно не влазит целиком на экран телефона. Если же его запихнуть, то элементы поля будут не читаемы.

Так шоле надо? https://puu.sh/CUswd/47fe941993.gif
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 16:21

Да! Вот именно так. Когда я пытаюсь повторить, у меня получается примерно вот это:
Изображение
Почему текст мылит и растягивает?
Создал Canvas, в настройках Render mode указал world space. В него запихнул панель, в паенль текст, но он какой-то не такой(
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

Re: Вывод текста.

Сообщение Saltant 03 мар 2019, 16:24

ustas235 писал(а):Да! Вот именно так. Когда я пытаюсь повторить, у меня получается примерно вот это:
Изображение
Почему текст мылит и растягивает?
Создал Canvas, в настройках Render mode указал world space. В него запихнул панель, в паенль текст, но он какой-то не такой(

Потому что у тебя слишком маленький масштаб поля в пикселях, текст для такого не предназначен. Используй TextMesh Pro ему без разницы до какого размера ужиматься, он всё равно отрендерит себя прекрасно.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Вывод текста.

Сообщение ustas235 03 мар 2019, 16:37

Слишком маленький размер... Т.е. когда я создаю Canvas, и он своими границами далеко уходит вправо и вверх:
Изображение
означает что не в том масштабе работаю, и правильно было все увеличить и подогнать в окошко Canvas'a?
ustas235
UNец
 
Сообщения: 23
Зарегистрирован: 25 мар 2018, 10:24

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 19