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

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

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

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

СообщениеДобавлено: 03 мар 2019, 13:31
Saltant
Сделай текст "внутри" игрока и он будет ездить вместе с ним.

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

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

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

СообщениеДобавлено: 03 мар 2019, 13:34
alew
Синтаксис:
Используется 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

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

СообщениеДобавлено: 03 мар 2019, 13:53
ustas235
Справка пишет, что GUI Text относится к устаревшим методам рисования и рекомендует ими не пользоваться. Хотелось бы разобраться как правильно работать на современной системе пользовательского интерфейса.

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

СообщениеДобавлено: 03 мар 2019, 14:00
Xtir
Что-то я ничего не понял. Так текст должен висеть возле игрока или где-то в углу?

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

СообщениеДобавлено: 03 мар 2019, 14:24
ustas235
Текст должен всегда висеть на одном месте - напротив имен соотв. игроков. Камера вместе с игроками двигается по полю, но счет всегда в одном месте, например слева в углу игрового поля.

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

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

Так чтоль нужно? https://puu.sh/CUqTy/a1f1e5301f.gif

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

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

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

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

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

P.S мне не совсем понятно что в твоем понимании значит "игровое поле" и что значит "поле больше экрана".

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

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

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

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

Так шоле надо? https://puu.sh/CUswd/47fe941993.gif

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

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

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

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

Потому что у тебя слишком маленький масштаб поля в пикселях, текст для такого не предназначен. Используй TextMesh Pro ему без разницы до какого размера ужиматься, он всё равно отрендерит себя прекрасно.

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

СообщениеДобавлено: 03 мар 2019, 16:37
ustas235
Слишком маленький размер... Т.е. когда я создаю Canvas, и он своими границами далеко уходит вправо и вверх:
Изображение
означает что не в том масштабе работаю, и правильно было все увеличить и подогнать в окошко Canvas'a?