Jump to content
Unity Insider Forum
Sign in to follow this  
Kojote

Text Farbwechsel

Recommended Posts

Grüße!

Hier ein kleines Script mit dem ein UI-Text einen Farbwechsel vollführt. Das Farbspektrum kann im Bereich RGB angepasst werden.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

/*************************************
 * Kojote - 21.07.2018
 * https://forum.unity-community.de
 *************************************/

public class Text_Zufallsfarbe : MonoBehaviour {

    [Header("Min. und Max. von Rot")]
    [Range(0, 255)] public int minRot;
    [Range(0, 255)] public int maxRot;

    [Header("Min. und Max. von Gelb")]
    [Range(0, 255)] public int minGelb;
    [Range(0, 255)] public int maxGelb;

    [Header("Min. und Max. von Blau")]
    [Range(0, 255)] public int minBlau;
    [Range(0, 255)] public int maxBlau;

    [Header("Startfarbe für alle Texte")]
    public Color32 colStart;
    private Color32 colZiel;

    [Header("Texte zum Farbwechseln")]
    public Text[] texte = new Text[0];

    [Header("Farbwechsel bei Spielstart?")]
    public bool farbwechselStart = true;
    private bool farbeWechseln = false;

    [Header("Farbwechselgeschwindigkeit")]
    private float geschwindigkeit = 0.5f;
    private float startZeit;


    void Start() {
        if (texte.Length == 0) {
            Debug.Log("FEHLER: Keine Texte zum Farbwechsel angegeben im GameObject: " + this.gameObject.name);
            return;
        } else {
            for (int i = 0; i < texte.Length; i++) {
                texte[i].color = new Color32(colStart.r, colStart.g, colStart.b, 255);
            }
        }
        if (minRot > maxRot) {
            Debug.Log("FEHLER: Min. Rot ist größer als Max. Rot in GameObject: " + this.gameObject.name);
            return;
        }
        if (minGelb > maxGelb) {
            Debug.Log("FEHLER: Min. Gelb ist größer als Max. Gelb in GameObject: " + this.gameObject.name);
            return;
        }
        if (minBlau > maxBlau) {
            Debug.Log("FEHLER: Min. Blau ist größer als Max. Blau in GameObject: " + this.gameObject.name);
            return;
        }
        if (((int)colStart.r >= minRot & (int)colStart.r <= maxRot) & ((int)colStart.g >= minGelb & (int)colStart.g <= maxGelb) & ((int)colStart.b >= minBlau & (int)colStart.b <= maxBlau)) {
            // Alle ingestellten Startparameter stimmen!
        } else {
            Debug.Log("FEHLER: Die Startfarbe ist außerhalb des Bereiches das für RGB angegeben wurde. GameObject: " + this.gameObject.name);
            return;
        }
        if (farbwechselStart == true) {
            startZeit = Time.time;
            FarbwechselAktivieren();
        }
    }

	private void Update () {
        if (farbeWechseln == true) {
            FarbeWechseln();
        }
    }

    private void FarbeWechseln() {
        float t = (Time.time - startZeit) * geschwindigkeit;

        foreach (Text text in texte) {
            text.color = Color32.Lerp(colStart, colZiel, t);
        }

        if (t >= 1) {
            startZeit = Time.time;
            colStart = colZiel;
            ZufallsfarbeErmitteln();
        }
    }

    public void FarbwechselAktivieren() {
        ZufallsfarbeErmitteln();
        farbeWechseln = true;
    }

    public void FarbwechselDeaktivieren() {
        farbeWechseln = false;
    }

    private void ZufallsfarbeErmitteln() {
        colZiel = new Color32(((byte)Random.Range(minRot, maxRot)), ((byte)Random.Range(minGelb, maxGelb)), ((byte)Random.Range(minBlau, maxBlau)), 255);
    }
}

Grüße von Kojote

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×