GUI

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

GUI

Сообщение A1g0 06 мар 2017, 19:48

Как сделать так, чтобы при определенных условиях: число "Money" плавно увеличилось ( в размере ) на немного, а потом обратно в дефолтный размер ( так же плавно ) ? И еще чтобы число "Money" и спрайт "SimbolMoney" имели размер в процентах. Типа чтобы их размер был на всех экранах одинаков.

Синтаксис:
Используется csharp
public int Money;
public Texture2D SimbolMoney;

        styleRightAligment = new GUIStyle();
        styleRightAligment.alignment = TextAnchor.LowerRight;
       styleRightAligment.fontSize = 40;
        styleRightAligment.font = Fontt;
        styleRightAligment.normal.textColor = Color.yellow;



    void Update(){
        Invoke("OnGUI", 0);
}




    void OnGUI()
    {
        GUILayout.BeginArea(new Rect(30, 30, Screen.width - 20, 200));
       GUILayout.BeginHorizontal();
       
        GUILayout.Label(SimbolMoney, styleRightAligment, GUILayout.Width(40), GUILayout.Height(40));
        GUILayout.Label(Money.ToString(), styleRightAligment, GUILayout.ExpandWidth(false));
       
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }

 
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение samana 06 мар 2017, 21:34

Я не по вопросу, просто совет - нет смысла вызывать в Update OnGUI. OnGUI вызывается автоматически, когда это нужно.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: GUI

Сообщение Rpabuj1 06 мар 2017, 23:49

Добрый вечер! :)
Ну, увеличение можно сделать через Time.deltaTime и умножать на нужный коэффициент. Это должно быть в Update().
Rpabuj1
Старожил
 
Сообщения: 639
Зарегистрирован: 04 авг 2015, 12:07

Re: GUI

Сообщение A1g0 25 мар 2017, 00:27

Rpabuj1 писал(а):Добрый вечер! :)
Ну, увеличение можно сделать через Time.deltaTime и умножать на нужный коэффициент. Это должно быть в Update().

Добрый вечер. А можно поподробнее - как это написать?
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение Rpabuj1 26 мар 2017, 14:51

A1g0 писал(а):
Rpabuj1 писал(а):Добрый вечер! :)
Ну, увеличение можно сделать через Time.deltaTime и умножать на нужный коэффициент. Это должно быть в Update().

Добрый вечер. А можно поподробнее - как это написать?


Например так:
money += Time.deltaTime*что_нибудь;

Умножать необязательно.
Rpabuj1
Старожил
 
Сообщения: 639
Зарегистрирован: 04 авг 2015, 12:07

Re: GUI

Сообщение A1g0 02 апр 2017, 01:30

Синтаксис:
Используется csharp
void OnGUI()
        {
                GUILayout.Label(SimbolMoney, styleRightAligment, GUILayout.Width(40), GUILayout.Height(40));
                GUILayout.Label(Moneypoint.ToString(), styleRightAligment, GUILayout.ExpandWidth(false));
        }

Как сделать так, чтобы на всех экранах (телефонах) SimbolMoney (Label) имел определенный размер? Например: 10% от ширины от экрана и 8% от высоты экрана.
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение samana 02 апр 2017, 09:40

A1g0 писал(а):Например: 10% от ширины от экрана и 8% от высоты экрана.


Для этого нужно узнать, сколько пикселей вмещается в одном проценте ширины или высоты экрана. Просто делите ширину экрана на сто и умножаете на нужный вам процент. Например для сорока процентов это выглядит примерно так:
Синтаксис:
Используется csharp
GUILayout.Width((Screen.width /100) * 40)
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: GUI

Сообщение A1g0 02 апр 2017, 14:12

samana писал(а):
A1g0 писал(а):Например: 10% от ширины от экрана и 8% от высоты экрана.


Для этого нужно узнать, сколько пикселей вмещается в одном проценте ширины или высоты экрана. Просто делите ширину экрана на сто и умножаете на нужный вам процент. Например для сорока процентов это выглядит примерно так:
Синтаксис:
Используется csharp
GUILayout.Width((Screen.width /100) * 40)

спасибо
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение A1g0 02 апр 2017, 14:12

samana писал(а):
A1g0 писал(а):Например: 10% от ширины от экрана и 8% от высоты экрана.


Для этого нужно узнать, сколько пикселей вмещается в одном проценте ширины или высоты экрана. Просто делите ширину экрана на сто и умножаете на нужный вам процент. Например для сорока процентов это выглядит примерно так:
Синтаксис:
Используется csharp
GUILayout.Width((Screen.width /100) * 40)

спасибо
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение A1g0 02 апр 2017, 15:07

Rpabuj1 писал(а):
A1g0 писал(а):
Rpabuj1 писал(а):Добрый вечер! :)
Ну, увеличение можно сделать через Time.deltaTime и умножать на нужный коэффициент. Это должно быть в Update().

Добрый вечер. А можно поподробнее - как это написать?


Например так:
money += Time.deltaTime*что_нибудь;

Умножать необязательно.

Пробовал, но что-то не получилось. Можете сделать это на этом примере?
//скрипт, который выводит "Moneypoint"
Синтаксис:
Используется csharp
void Start ()
{
styleRightAligment.fontSize = Screen.width /100 * 5;
}
void OnGUI ()
{
                GUILayout.BeginArea(new Rect(30, 30, Screen.width - 30, 200));
                GUILayout.BeginHorizontal();
                GUILayout.Label(Moneypoint.ToString(), styleRightAligment, GUILayout.ExpandWidth(false));
                GUILayout.EndHorizontal();
                GUILayout.EndArea();
}
 

//Скрипт, который прибавляет "Moneypoint"
Синтаксис:
Используется csharp
        private MoneyGame ScoreMoney;
        public GameObject SoundPlayObject;
        public bool PlaySoundMoneyS = false;
        public bool PlaySoundMoney = false;

void Update ()
{
                if (что-то происходит)
                {
                        Invoke ("Playsound", 0);
                }
        }

void Playsound () {
                PlaySoundMoney = true;
                if(PlaySoundMoneyS == false){
                        if(PlaySoundMoney == true)
                        {
                                PlaySoundMoney = false;
                                PlaySoundMoneyS = true;
                                ScoreMoney.Moneypoint++;
                                Destroy(gameObject); // Выключаем объект
                        }
                }
 

Надо чтобы во втором скрипте в void PlaySound () прибавлялся размер styleRightAligment.fontSize, а потом через секунду возвращался в исходный размер.
A1g0
UNец
 
Сообщения: 29
Зарегистрирован: 04 мар 2017, 13:23

Re: GUI

Сообщение samana 02 апр 2017, 15:38

Синтаксис:
Используется csharp
styleRightAligment.fontSize = Screen.width /100 * 5;

Если я правильно помню, то знак умножения в большем приоритете, чем знак деления, поэтому скорее всего ваше умножение выполняется в первую очередь, а потом лишь деление.
Попробуйте установить скобки, как в моём примере, чтобы деление выполнялось в первую очередь.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: GUI

Сообщение mysterio 02 апр 2017, 16:44

samana писал(а):
Синтаксис:
Используется csharp
styleRightAligment.fontSize = Screen.width /100 * 5;

Если я правильно помню, то знак умножения в большем приоритете, чем знак деления...

А если я правильно понял, то Шарпу вообще пофиг на приоритеты математических операций.. Уже дофига раз сталкивался с подобным:
Синтаксис:
Используется csharp
int i = 5 + 5 * 5; // будет равно 50, а не 30
 
mysterio
UNIт
 
Сообщения: 50
Зарегистрирован: 28 мар 2017, 16:40

Re: GUI

Сообщение Tolking 02 апр 2017, 17:45

Интересно где сталкивался? В на заборном творчестве?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: GUI

Сообщение mysterio 03 апр 2017, 03:29

Постебаться решили? Ну вперед..
Когда собирал класс с умениями и прочими прелестями ролевушки, то в формулах порядка этого не было и приходилось заключать в скобки, устанавливая самому порядок вычислений. А там их мноооого было. Сейчас работает.. Псц..
mysterio
UNIт
 
Сообщения: 50
Зарегистрирован: 28 мар 2017, 16:40

Re: GUI

Сообщение ilkalawson 03 апр 2017, 09:13

У меня когда перестает работать умножение или деление, то сразу же переустанавливаю винду.
ilkalawson
UNIверсал
 
Сообщения: 412
Зарегистрирован: 19 янв 2015, 20:38
Skype: lawsonunity

След.

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

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

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