Менять прозрачность текста. (РЕШЕНО)

Графический интерфейс пользователя

Менять прозрачность текста. (РЕШЕНО)

Сообщение pesiik 08 окт 2015, 11:11

Мне нужно по ui кнопке менять прозрачность текста. Не хочу делать это через аниматор, ибо объем большой. Подскажите как это сделать через скрипт. То, что я написал не работает
Синтаксис:
Используется csharp
private Animator anim;
    private Camera MainCam;
    private Camera InstCam;
    private GameObject Instrument;
    private Text info;
    private float change;
    private Color prozr;
   
    bool index = false;

    public void ToDivision() {

    }

    public void ToMainCamera() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = true;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = false;
    }

    public void indexCheck() {
       index = !index;
    }

    public void ToResectionKnife() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = false;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = true;
        Instrument = GameObject.Find("Resection_knife");
        Instrument.transform.localPosition = new Vector3(0,0,0);
    }

    public void InfoResectionKnife() {
        info = GameObject.Find("Resection_knife text").GetComponent<Text>();
        change = Time.deltaTime * 20f;
        prozr = info.GetComponent<Color>();
        if (index == true) {
            prozr.a += change;
        }
       

Все происходит в public void InfoResectionKnife()
Последний раз редактировалось pesiik 13 окт 2015, 09:59, всего редактировалось 1 раз.
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: Менять прозрачность текста.

Сообщение pesiik 08 окт 2015, 11:54

"ArgumentException: GetComponent requires that the requested component 'Color' derives from MonoBehaviour or Component or is an interface." - выдает
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: Менять прозрачность текста.

Сообщение pesiik 08 окт 2015, 13:06

Синтаксис:
Используется csharp
private Animator anim;
    private Camera MainCam;
    private Camera InstCam;
    private GameObject Instrument;
    private Text info;
    private float change;
    private Color prozr;
   
    bool index = false;

    public void ToDivision() {

    }

    public void ToMainCamera() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = true;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = false;
    }

    public void indexCheck() {
       index = !index;
    }

    public void ToResectionKnife() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = false;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = true;
        Instrument = GameObject.Find("Resection_knife");
        Instrument.transform.localPosition = new Vector3(0,0,0);
    }

    public void InfoResectionKnife() {
        info = GameObject.Find("Resection_knife text").GetComponent<Text>();
        change = Mathf.PingPong(Time.time * 10, 1);
        if (index == true) {
            info.color = new Color(1, 1, 1, -change);
            if (info.color.a == 255) {
                change = 0;
            }
        }
       
    }

Дописал, но не обновляется с каждым кадром, а только один раз по щелчку. Подскажите как сделать плавно, пока совсем не станет насыщенным цвет
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: Менять прозрачность текста.

Сообщение mp3 08 окт 2015, 15:32

Синтаксис:
Используется csharp
for(int i=100; i > 0; i--) {
// lower alpha
}
Be straight, or go forward.
Аватара пользователя
mp3
Адепт
 
Сообщения: 1071
Зарегистрирован: 21 окт 2009, 23:50

Re: Менять прозрачность текста.

Сообщение pesiik 08 окт 2015, 15:56

mp3 писал(а):
Синтаксис:
Используется csharp
for(int i=100; i > 0; i--) {
// lower alpha
}

Да, спасибо, уже решил)
Если кому надо:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ExampleClass : MonoBehaviour
{

    private Animator anim;
    private Camera MainCam;
    private Camera InstCam;
    private GameObject Instrument;
    private Text info;
    private float change;
    private Color prozr;
   
    bool index = false;

   
    public void ToMainCamera() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = true;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = false;
        StartCoroutine("CoroutinesMinus");
    }

    public void indexCheck() {
       index = !index;
    }

    public void ToResectionKnife() {
        MainCam = GameObject.Find("Main Menu Camera").GetComponent<Camera>();
        MainCam.enabled = false;
        InstCam = GameObject.Find("Camera inst menu").GetComponent<Camera>();
        InstCam.enabled = true;
        Instrument = GameObject.Find("Resection_knife");
        Instrument.transform.localPosition = new Vector3(0,0,0);
    }

    public void StartCorotuines() {
        if (index == true) {
            StartCoroutine("CoroutinesPlus");
        } else StartCoroutine("CoroutinesMinus");
    }

    public void ResectionKnifeInfo() {
        info = GameObject.Find("Resection_knife text").GetComponent<Text>();
    }

    IEnumerator CoroutinesPlus() {
        for (float f = 0f; f >= 0; f += 0.02f) {
            prozr.a = f;
            info.color = prozr;
            yield return new WaitForEndOfFrame();
        }
    }
   
     IEnumerator CoroutinesMinus() {
        for (float f = 1f; f <= 1; f -= 0.02f) {
            prozr.a = f;
            info.color = prozr;
            yield return new WaitForEndOfFrame();
        }
           
    }
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46

Re: Менять прозрачность текста.

Сообщение Cr0c 08 окт 2015, 16:06

Тут корутины бесконечны. Проверьте условия завершения циклов.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Менять прозрачность текста.

Сообщение pesiik 13 окт 2015, 09:59

Cr0c писал(а):Тут корутины бесконечны. Проверьте условия завершения циклов.

Спасибо, исправил
Синтаксис:
Используется csharp
IEnumerator CoroutinesPlus() {
        for (float f = 0f; f <= 1; f += 0.02f) {
            prozr.a = f;
            info.color = prozr;
            yield return new WaitForEndOfFrame();
        }
    }
   
     IEnumerator CoroutinesMinus() {
        for (float f = 1f; f >= 0; f -= 0.02f) {
            prozr.a = f;
            info.color = prozr;
            yield return new WaitForEndOfFrame();
        }
     }  
pesiik
UNITрон
 
Сообщения: 223
Зарегистрирован: 01 авг 2015, 11:46


Вернуться в uGUI

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

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