Радиальный progress bar

Общие вопросы о Unity3D

Радиальный progress bar

Сообщение Kayler 11 авг 2013, 14:50

Привет всем, кто нибудь вкурсе как можно сделать радиальный бар на гуи? пробовал много вариантов ни один не сработал... если нельзя то подскажите как привязать плашку к разным разрешениям экрана? собстно гуи же не меняется от разрешения и кроме того привязывается к сторонам экрана, вобщем чтоб не изобретать вилосипед
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Радиальный progress bar

Сообщение trololoid 11 авг 2013, 15:00

В ассетсторе есть Circle прогресс бар, деньгу стоит правда
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Радиальный progress bar

Сообщение Kayler 11 авг 2013, 15:16

там так же есть вот такая штука
http://redmine.madpixelmachine.com/proj ... ing_Gauges
но я понятия не имею привязывается ли оно к разрешению и сторонам экрана как и Circle, такие дела

хотелось бы услышать про привязку или гуи
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Радиальный progress bar

Сообщение seaman 11 авг 2013, 15:32

там так же есть вот такая штука

Это сделано на NGUI
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Радиальный progress bar

Сообщение Neyl 11 авг 2013, 16:43

Делал для своего проекта простенький круговой прогресс бар на GL. Без текстур, заливается выбранным цветом. Во вложении пример использования.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17

Re: Радиальный progress bar

Сообщение jetyb 12 авг 2013, 09:53

В GUI есть свойство matrix, отвечающее за матрицу преобразования координат. Меняя ее перед отрисовкой, можно рисовать текстуру стрелки под углом:
Синтаксис:
Используется csharp
Matrix4x4 mat= GUI.matrix;
GUIUtility.RotateAroundPivot(angle, center);
GUI.DrawTexture(...);
GUI.matrix = mat;
 

Сурово конечно [curved_hands], но высокоуровнее ГУЙ и не умеет.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Радиальный progress bar

Сообщение Diab10 12 авг 2013, 10:15

jetyb писал(а):В GUI есть свойство matrix, отвечающее за матрицу преобразования координат. Меняя ее перед отрисовкой, можно рисовать текстуру стрелки под углом:
Синтаксис:
Используется csharp
Matrix4x4 mat= GUI.matrix;
GUIUtility.RotateAroundPivot(angle, center);
GUI.DrawTexture(...);
GUI.matrix = mat;
 

Сурово конечно [curved_hands], но высокоуровнее ГУЙ и не умеет.



Речь не о повороте стрелки, а о заполнении круглой полоски
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Радиальный progress bar

Сообщение Receptor 12 авг 2013, 10:59

Берем изображение с градиентной заливкой, что бы по тону уходил от максимально темного, к максимально светлому, берем шейдер Transparent Cut Off и управляем параметром Cutoff. Полуим соответсвующий результат

Изображение
Изображение
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Радиальный progress bar

Сообщение Paul Siberdt 12 авг 2013, 12:21

Не ипите мозги себе и другим :)

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

Можно не кольцо, а хоть какашку сделать или стебель растения... подобным макаром (смещение ювишек) в Аллодах Онлайн сделан очень красивый узорчатый эффект "квест выполнен".
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Радиальный progress bar

Сообщение getAlex 14 авг 2013, 12:53

Ну вы прям агенты малдеры. Решение может быть намного проще.

Если не нужен прозрачный фон, то берётся 2 элементарные спирали с одинаковым радиусом, после чего совершается обычное вращение по оси одной из них :p В проекции глубину спирали не видимо, поэтому создаётся впечатление круга и бара. \:D/
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: Радиальный progress bar

Сообщение Golandez 14 авг 2013, 13:20

Ничего, что спираль будет иметь тучу трисов, чтобы она действительно по краю выглядела кругом, а не шестеренкой?
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Радиальный progress bar

Сообщение getAlex 14 авг 2013, 14:50

Golandez писал(а):Ничего, что спираль будет иметь тучу трисов, чтобы она действительно по краю выглядела кругом, а не шестеренкой?

Но текстура то будет гладкая. А края в альфе. Пара пикселей не сделают нагрузку на рендер.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: Радиальный progress bar

Сообщение Golandez 14 авг 2013, 18:24

Изображение
Как ее сделать лоуполи, чтобы визуально край выглядел ровно, а не шестеренкой? Считаем, что ее развернули и текстура ложится корректно на нужную нам сторону.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Радиальный progress bar

Сообщение RestFall 15 авг 2013, 19:09

Neyl писал(а):Делал для своего проекта простенький круговой прогресс бар на GL. Без текстур, заливается выбранным цветом. Во вложении пример использования.

спасибо большое! отличная штука!) пытался понять как сделать просто полоску, пока не очень получается? текстурой не хочется) можете подсказать?

я так понимаю надо по колдовать со степквантернион?
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Радиальный progress bar

Сообщение Neyl 15 авг 2013, 20:34

Полоску, всмысле прямой прогресс бар? Ни с чем колдовать не надо, просто нарисовать два прямоугольника - для фона и для полоски.
Синтаксис:
Используется csharp
using UnityEngine;

namespace Crankshaft.XGUI
{
    public class HorisontalProgressBar : BaseElement
    {
        private Rect m_rect;
        private Rect m_barRect;

        public HorisontalProgressBar(Rect rect)
        {
            m_rect = rect;
            m_barRect = m_rect;
            InitMaterials();
        }

        public void Recalculate(Rect rect)
        {
            m_rect = rect;
        }

        public float Progress
        {
            set
            {
                float val = Mathf.Clamp01(value);
                m_barRect.width = m_rect.width * val;
            }
        }

        public void Draw()
        {
            if (Event.current.type == EventType.repaint)
            {
                BeginFilledRects();
                DrawContent();
                EndFilledRects();
            }
        }

        public void DrawContent()
        {
            GL.Color(Color.gray);
            DrawFilledRect(m_rect);//background

            GL.Color(Color.green);
            DrawFilledRect(m_barRect);//bar
        }
    }
}
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17

След.

Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21