Unity3D中通用改變Text文字顏色與還原方法
阿新 • • 發佈:2019-02-07
一、建立一個通用的改變文字顏色與還原指令碼
三、將這兩個指令碼掛載到場景的指令碼管理器上(或者按鈕上),然後指定需要改變顏色的Text,最後在給按鈕指定ChangeTextColor()方法即可四、執行場景,點選按鈕就會改變顏色,2秒之後就會還原文字顏色
二、建立一個需要改變、還原指定Text顏色的指令碼using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Global { public class Global_TxtMgr : MonoBehaviour { public static Global_TxtMgr Instance; //本指令碼例項 public Color32 _TextOriginalColor; //文字原來的顏色 private bool _IsChangeColor=true; //改變顏色的標誌 private void Awake() { Instance = this; } /// <summary> /// 文字顏色的改變 /// </summary> /// <param name="text">Text文字</param> /// <param name="r">自定義三原色的r</param> /// <param name="g">自定義三元色的g</param> /// <param name="b">自定義三元色的b</param> /// <param name="a">自定義文字顏色透明度</param> public void TextColorChangeAndRestore(Text text, byte r, byte g, byte b, byte a) { if (_IsChangeColor == true) { ChangeTextColor(text, r, g, b, a); } else { BackOriginalColor(text); } _IsChangeColor = !_IsChangeColor; } /// <summary> /// 改變文字的顏色 /// </summary> /// <param name="text">文字本身</param> /// <param name="r"></param> /// <param name="g"></param> /// <param name="b"></param> /// <param name="a"></param> public void ChangeTextColor(Text text,byte r,byte g,byte b,byte a) { if (text!=null) { text.color = new Color32(r, g, b, a); } } /// <summary> /// 還原文字的顏色 /// </summary> /// <param name="text">文字本身</param> public void BackOriginalColor(Text text) { if (text != null) { text.color = _TextOriginalColor; } } /// <summary> ///指定時間恢復文字顏色 /// </summary> /// <param name="text">文字本身</param> /// <param name="time">指定恢復的時間</param> /// <returns></returns> public IEnumerator BackOriginalColorByTime(Text text,float time) { yield return new WaitForSeconds(time); if (text!=null) { text.color = _TextOriginalColor; } } }//class_end }
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Global; namespace SimpleUIFrame { public class Test_TextChangeColor : MonoBehaviour { public Text text; //文字 private Color32 _textcolor; void Start() { //獲取文字原來的顏色 _textcolor = text.color; } //改變文字的顏色 public void ChangeTextColor() { Global_TxtMgr.Instance._TextOriginalColor = _textcolor; //Global_TxtMgr.Instance.TextColorChangeAndRestore(text,38,185,154,255); Global_TxtMgr.Instance.ChangeTextColor(text, 38, 185, 154, 255); //Global_TxtMgr.Instance.BackOriginalColor(text); StartCoroutine(Global_TxtMgr.Instance.BackOriginalColorByTime(text,Global_Parameter.INTERVAL_TIME_2)); } }//class_end }
三、將這兩個指令碼掛載到場景的指令碼管理器上(或者按鈕上),然後指定需要改變顏色的Text,最後在給按鈕指定ChangeTextColor()方法即可四、執行場景,點選按鈕就會改變顏色,2秒之後就會還原文字顏色