Увеличение\уменьшение кнопки по клику

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

Увеличение\уменьшение кнопки по клику

Сообщение felt 06 ноя 2012, 15:31

Так-с, есть скрипт, по клику увеличивается, но по повторному клику не хочет уменьшатся.
Синтаксис:
Используется javascript
var rectButton : Rect;

var maxSizeWidht : float  = 150;
var maxSizeHeight : float  = 150;
var minSizeWidht : float  = 50;
var minSizeHeight : float  = 50;

var speedSmooth : int = 1;

var isZoomed : boolean = false;

function Start () {

}


function OnGUI(){
                if (GUI.Button(rectButton, "Test") && isZoomed == false)
                {
                        isZoomed = true;
                }
                if (GUI.Button(rectButton, "Test") && isZoomed == true)
                {
                isZoomed = false;
                }
}

function Update () {
       
        ZoomIn();
        ZoomOut();
       
}

function ZoomIn(){
        if (isZoomed == true){
                if (rectButton.width < maxSizeWidht && rectButton.height < maxSizeHeight)
                {
                        rectButton.width+=5+speedSmooth;
                        rectButton.height+=5+speedSmooth;
                }
        }
}


function ZoomOut(){
        if (isZoomed == false){
                if (rectButton.width > minSizeWidht && rectButton.height > minSizeWidht)
                {
                        rectButton.width-=5+speedSmooth;
                        rectButton.height-=5+speedSmooth;
                }
        }
}

 
felt
UNец
 
Сообщения: 6
Зарегистрирован: 29 окт 2012, 09:59

Re: Увеличение\уменьшение кнопки по клику

Сообщение pod4444 06 ноя 2012, 21:52

вчитайтесь внимательно в каждую переменную:
Синтаксис:
Используется javascript
function ZoomOut(){
        if (isZoomed == false){
                if (rectButton.width > minSizeWidht && rectButton.height > minSizeWidht)
 
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: Увеличение\уменьшение кнопки по клику

Сообщение Volandpro 07 ноя 2012, 09:18

Вместо minSizeWidht напиши minSizeHeight) Хотя они обе равны 50, так что разницы никакой наверное)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

Re: Увеличение\уменьшение кнопки по клику

Сообщение felt 07 ноя 2012, 10:29

Спасибо за замечание, но это не решило проблему.
felt
UNец
 
Сообщения: 6
Зарегистрирован: 29 окт 2012, 09:59

Re: Увеличение\уменьшение кнопки по клику

Сообщение Volandpro 07 ноя 2012, 10:37

Попробуй напиши
Синтаксис:
Используется javascript
rectButton.width-=5;
rectButton.height-=5;

Если нифига, значит условине кривое)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

Re: Увеличение\уменьшение кнопки по клику

Сообщение seaman 07 ноя 2012, 11:57

Две кнопки в одном месте - это ненормально.
Или делайте срабатывание по клавиатуре, или разносите кнопки пространственно.
Проще всего, конечно так:
Синтаксис:
Используется javascript
function OnGUI(){
                if (GUI.Button(rectButton, "Test"))
                {
                        isZoomed = !isZoomed ;
                }
}
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Увеличение\уменьшение кнопки по клику

Сообщение Volandpro 07 ноя 2012, 12:04

Справделиво
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

Re: Увеличение\уменьшение кнопки по клику

Сообщение Nicloay 07 ноя 2012, 13:41

Держи, может не совсем красиво и на C# но делает как раз то что тебе нужно, можешь взять себе лишь кусок кода, где я евент смотрю и позицию мышки над кнопкой.

Да.. и мне почему то кажется, что все это можно решить просто через стили, без всякого кода (чтоб кнопки увиличивались при клике), правда это будет без анимации

Мда.. после перепрочтения топика, понял что нужно было автору :), но один фиг задачка была полезная и интересная :), имею в виду та которая ниже :)

Синтаксис:
Используется csharp
using UnityEngine;

public class guitest : MonoBehaviour {
        Rect rect=new Rect(50,50,200,40);
        float sizeOnClick=10f;
        float sizeSpeed=1f;
        bool mouseDown=false;
        float originalWidth;
        float maxWidth;
       
        void Awake() {         
                originalWidth=rect.width;      
                maxWidth=originalWidth+sizeOnClick;
        }
       
       
       
        void OnGUI () {
               
                if (mouseDown && Event.current.type==EventType.MouseUp ){
                        mouseDown=false;                               
                }
               
                if (Event.current.type == EventType.MouseDown && rect.Contains (Event.current.mousePosition)){
                        mouseDown=true;
                        Event.current.Use();
                }
               
                GUI.Button (rect,"test button");
               
                if (mouseDown){                                        
                        if(rect.width < maxWidth){                     
                                rect.width+=sizeSpeed;
                                rect.x-=sizeSpeed/2;
                                rect.y-=sizeSpeed/2;
                                rect.height+=sizeSpeed;
                        }                      
                } else {
                        if (rect.width>originalWidth){
                                rect.width-=sizeSpeed;                                 
                                rect.x+=sizeSpeed/2;
                                rect.y+=sizeSpeed/2;
                                rect.height-=sizeSpeed;
                        }
                }
               
        }
       
}
 
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Увеличение\уменьшение кнопки по клику

Сообщение felt 07 ноя 2012, 15:26

Спасибо всем за помощь, решил таки через кнопку на клаве сделать.
felt
UNец
 
Сообщения: 6
Зарегистрирован: 29 окт 2012, 09:59

Re: Увеличение\уменьшение кнопки по клику

Сообщение seaman 07 ноя 2012, 18:24

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

Re: Увеличение\уменьшение кнопки по клику

Сообщение felt 08 ноя 2012, 10:38

Не заметил в начале. Спасибо большое.
felt
UNец
 
Сообщения: 6
Зарегистрирован: 29 окт 2012, 09:59

Re: Увеличение\уменьшение кнопки по клику

Сообщение mrcoder 08 ноя 2012, 10:50

felt писал(а):Так-с, есть скрипт, по клику увеличивается, но по повторному клику не хочет уменьшатся.
Синтаксис:
Используется javascript
function Update () {
       
        ZoomIn();
        ZoomOut();
       
}
 

уж сколько раз твердили миру что так делать нельзя.
отключите Vsynx и посмотрите что будет с вашей кнопкой :D
код легкий - сделайте через FixedUpdate()
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

Re: Увеличение\уменьшение кнопки по клику

Сообщение seaman 08 ноя 2012, 11:14

Ну почему же нельзя. Нужно просто учитывать deltatime:
rectButton.width+=(5+speedSmooth) * Time.deltaTime;
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Увеличение\уменьшение кнопки по клику

Сообщение mrcoder 08 ноя 2012, 11:17

seaman писал(а):Ну почему же нельзя. Нужно просто учитывать deltatime:
rectButton.width+=(5+speedSmooth) * Time.deltaTime;

конечно.
можно и вообще сделать свой отдельный класс внутреннего времени.
учитывая скилл тса из его вопроса - я предложил самый простой вариант в его случае.
что такое Time.deltaTime и куда его вставлять - ему будет гораздо сложнее cltkfnm чем Добавить Fixed
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

Re: Увеличение\уменьшение кнопки по клику

Сообщение felt 08 ноя 2012, 12:05

Что такое Time.deltaTime я знаю, не такой уж я и нуб. Я сначала думал сделать через дельту, но потом внезапно написал без дельты. Т.к. анимация играла и без этого. А вот про FixedUpdate() можно поподробнее?
Алсо, сам пишу на шарпе, js попробовать хотел :)
felt
UNец
 
Сообщения: 6
Зарегистрирован: 29 окт 2012, 09:59

След.

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

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

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