Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity > 2D/GUI

2D/GUI Вопросы на тему 2D графики и интерфейсов

Ответ
 
Опции темы
Старый 27.12.2020, 09:43   #1
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Что-то не то с RawImage.

Салют.
Две проблемы у меня:

1. rawimage всегда отображается с артефактами,
по краям появляются некоторые участки шириной в 1-2 пикселя,
закрашенные не пойми чем не пойми откуда выплывшим.
На самом png изображении этих косяков нет, их создаёт Unity.
Просто я создаю rawimage, натягиваю через инспектор на него
картинку, и получаю такую вот картину.

Пример во вложениях к посту.

2. Появилась потребность двигать rawimage по канвасу,
я с этим справляюсь, но результат меня неустраивает.
Грубо говоря с двух сторон канваса я двигаю на встречу
друг другу 2 rawimage, каждая должна пройти путь
в половину ширины экрана, и остановится.
Работает всё, но в половине случаев картинки проходят
на несколько пикселей больше расстояние, и я не могу понять
в чём проблема. Один из участков кода отвечающий за сближение:

        SW = Screen.width;

        if (FightScene.ZanaveskaSost == 1 && LH <= SW - 1)
        {

            LH = LH + 1f * Time.deltaTime * 1000;
 
            rectTransfrom.offsetMax -= new Vector2(-0.5f, 0) * Time.deltaTime * 1000;
            rectTransfrom2.offsetMin -= new Vector2(0.5f, 0) * Time.deltaTime * 1000;
         

            LogoLeft.offsetMin += new Vector2(0.5f, 0) * Time.deltaTime * 1000;
            LogoRight.offsetMax -= new Vector2(0.5f, 0) * Time.deltaTime * 1000;
            LogoLeft.offsetMax += new Vector2(0.5f, 0) * Time.deltaTime * 1000;
            LogoRight.offsetMin -= new Vector2(0.5f, 0) * Time.deltaTime * 1000;
        }
Каждый раз разный результат, rawimage практически в центре
останавливаются, но с погрешностью (чаще нахлёст друг на друга),
и это мне всю картину в целом портит.
Изображения
Тип файла: jpg RI.jpg (69.4 Кб, 142 просмотров)
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 27.12.2020, 12:10   #2
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Обе проблемы решил другим вариантом кода,
при чём первая проблема решилась сама собой,
при движении артефактов в окне "Game" не видно,
но отображаются в "Scene".

if (FightScene.ZanaveskaSost == 1 && LH < SW)
        {

            if (SuperTimer < 1f) { SuperTimer = SuperTimer + 1f  * Time.deltaTime * 1000; }

            if (SuperTimer > 0f)
            {
                LH = LH + Mathf.Floor(20f);
                SuperTimer = 0f;

                rectTransfrom.offsetMax -= new Vector2(-10f, 0);
                rectTransfrom2.offsetMin -= new Vector2(10f, 0);


                ZanaveskaLogoLeft.transform.Translate(Vector2.right * 10f);
                ZanaveskaLogoRight.transform.Translate(Vector2.left * 10f);

            }
        }
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 29.12.2020, 00:55   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,566
Написано 3,004 полезных сообщений
(для 5,317 пользователей)
Ответ: Что-то не то с RawImage.

По идее первая проблема связана с маппингом текстуры. Т.е. вот этот желтый кусок у тебя скорее всего есть с другой стороны текстуры. Обычно такое решается установкой параметра Wrap Mode = Clamp в настройках импорта.
А по поводу второй проблемы - в очередной раз призываю использовать анимации, а не код для таких задач)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crystal (31.12.2020)
Старый 30.12.2020, 05:26   #4
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от pax Посмотреть сообщение
По идее первая проблема связана с маппингом текстуры. Т.е. вот этот желтый кусок у тебя скорее всего есть с другой стороны текстуры. Обычно такое решается установкой параметра Wrap Mode = Clamp в настройках импорта.
А по поводу второй проблемы - в очередной раз призываю использовать анимации, а не код для таких задач)
С первым ничего не понял.
Со вторым, у меня ещё было много вариантов кода,
и проблема не решалась, из-за того, что у юнити всё в
рандомно-примерных флоатах, векторах, а дальтатайм
вообще срабатывает через разное время.

Финальный код, это на последнем сближении я просто
координаты желаемые уже устанавливаю вручную,
выравниваю короче это безобразие. Визуально вроде скачка незаметно.

А на счёт анимаций. Ну хз, я здесь подстраиваю картинки под высоту
и ширину экрана, заведомо не зная какое разрешение у игрока,
как это делать через анимации без кода я хз )

Но повторю, проблема решена принудительным трансформпозишном на
последние нужные координаты в конце этого безобразия.

if (GLOBALSUPERSCRIPT.CamStop == 0 && FightScene.ZanaveskaSost == 1) { GLOBALSUPERSCRIPT.CamStop = 1; SW = Screen.width; }

        if (FightScene.ZanaveskaSost == 1 && LH < SW)
        {
            if (ZanaveskaLeft.gameObject.activeSelf == false)
            {
                ZanaveskaLeft.gameObject.SetActive(true);
                ZanaveskaRight.gameObject.SetActive(true);

            }

            if (SuperTimer < 1f) { SuperTimer = SuperTimer + 1f * Time.deltaTime * 1000; }

            if (SuperTimer > 0f)
            {
                LH = LH + Mathf.Floor(20f);
                SuperTimer = 0f;

                rectTransfrom.offsetMax -= new Vector2(Mathf.Floor(-10f), 0);
                rectTransfrom2.offsetMin -= new Vector2(Mathf.Floor(10f), 0);


                ZanaveskaLogoLeft.transform.Translate(Vector2.right * Mathf.Floor(10f));
                ZanaveskaLogoRight.transform.Translate(Vector2.left * Mathf.Floor(10f));

            }
        }

        if (FightScene.ZanaveskaSost == 1 && LH >= SW && MicroTimer == 0f)
        {
            MicroTimer = 2f;
            float a = Mathf.Floor(ZanaveskaLogoLeft.transform.position.y);
            float b = Mathf.Floor(ZanaveskaLogoRight.transform.position.y);

            ZanaveskaLogoLeft.transform.position = new Vector2(Mathf.Floor(SW / 2 - 256), a);
            ZanaveskaLogoRight.transform.position = new Vector2(Mathf.Floor(SW / 2), b);
        }
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 30.12.2020, 20:52   #5
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,919
Написано 2,246 полезных сообщений
(для 5,215 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Crystal Посмотреть сообщение
С первым ничего не понял.
Захватывается часть текстуры с её противоположной стороны.
Обычно бывает на низких уровнях mipmap'ов.

Пример:

Сообщение от ABTOMAT Посмотреть сообщение
Как бороться?
Либо включить для "переходных" Clamp UV по одной из осей, чтобы вместо тайлинга получалась "растяжка" из пикселей того же цвета.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Arton за это полезное сообщение:
Crystal (31.12.2020), pax (02.01.2021)
Старый 31.12.2020, 05:18   #6
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Наконец-то появилось время открыть свой проект.
Это проблему решило -
Wrap Mode = Clamp
Непонятно только, почему по умолчанию нельзя было сделать
нормальную загрузку текстур в юнити.
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 31.12.2020, 11:32   #7
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,919
Написано 2,246 полезных сообщений
(для 5,215 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Crystal Посмотреть сообщение
Непонятно только, почему по умолчанию нельзя было сделать
нормальную загрузку текстур в юнити.
Это и есть режим по умолчанию везеде.
Попросту удобно когда текстура сама зацикливается, нежели при моделирование каждый раз менять.
Остальное, побочные эффекты ввиду самой логики работы.

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

В Blitz3D точно так же тайлиться, а для настроек были флаги:
16: Clamp U - ограничить текстуру по координате U
32: Clamp V - ограничить текстуру по координате V
(Offline)
 
Ответить с цитированием
Старый 31.12.2020, 17:37   #8
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Arton Посмотреть сообщение
Это и есть режим по умолчанию везеде.
Попросту удобно когда текстура сама зацикливается, нежели при моделирование каждый раз менять.
Остальное, побочные эффекты ввиду самой логики работы.

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

В Blitz3D точно так же тайлиться, а для настроек были флаги:
В моём случае это 2D, текстура на канвасе.
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 31.12.2020, 19:03   #9
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,919
Написано 2,246 полезных сообщений
(для 5,215 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Crystal Посмотреть сообщение
В моём случае это 2D, текстура на канвасе.
2D это 3D

На скриншоте в первом посте выглядит как 3D.
(Offline)
 
Ответить с цитированием
Старый 01.01.2021, 09:30   #10
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Arton Посмотреть сообщение
2D это 3D

На скриншоте в первом посте выглядит как 3D.
С каких пор канвас стал 3D? Это 2D UI объект на скриншоте, RawImage.
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 01.01.2021, 21:23   #11
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,363
Написано 2,017 полезных сообщений
(для 7,186 пользователей)
Ответ: Что-то не то с RawImage.

В Юнити нет 2d
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 02.01.2021, 02:55   #12
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,919
Написано 2,246 полезных сообщений
(для 5,215 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Crystal Посмотреть сообщение
С каких пор канвас стал 3D? Это 2D UI объект на скриншоте, RawImage.
Ну, 2D это условность, абстракция. Всё через полигональное 3D делается.
Вспомни в пример Блиц, когда нацепляли квады для постобработки на камеру или интерфейса. Тоже самое.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Arton за это полезное сообщение:
ARA (02.01.2021), Crystal (02.01.2021), St_AnGer (02.01.2021)
Старый 02.01.2021, 07:32   #13
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Вафля короче, 2D должно быть 2Dшным...
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Старый 02.01.2021, 10:19   #14
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,919
Написано 2,246 полезных сообщений
(для 5,215 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Crystal Посмотреть сообщение
Вафля короче, 2D должно быть 2Dшным...
Тогда возникает вопрос, что и как его будет обрабатывать? Универсальной реализации, как с полигональной графикой не придумали.
Это совсем не плохо что 2D через 3D идёт. Всё зависит от разработчиков движка.

P. S. Так-то 3D это всего лишь расширение 2D. Видяхе вовсе всё равно, что там у пользователя на выходе, ей главное данные правильно скормить.
(Offline)
 
Ответить с цитированием
Старый 02.01.2021, 13:45   #15
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,060
Написано 1,634 полезных сообщений
(для 5,169 пользователей)
Ответ: Что-то не то с RawImage.

Сообщение от Arton Посмотреть сообщение
Тогда возникает вопрос, что и как его будет обрабатывать? Универсальной реализации, как с полигональной графикой не придумали.
Это совсем не плохо что 2D через 3D идёт. Всё зависит от разработчиков движка.

P. S. Так-то 3D это всего лишь расширение 2D. Видяхе вовсе всё равно, что там у пользователя на выходе, ей главное данные правильно скормить.
Я точно не помню, но вроде при создании проекта можно указать
он 2D или 3D, и что-то мне подсказывает в режиме 2D текстуры
работают по другому.
__________________
Проект "Deathbring Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Я на YouTube Gaming
Канал на YouTube
Прямые трансляции на YouTube
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:43.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com