unity 中让Text的文字动态刷新形式

Posted study088

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 中让Text的文字动态刷新形式相关的知识,希望对你有一定的参考价值。

 

第一种刷新文字形式

技术分享图片
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class SensorTextRefresh2
{

    // Use this for initialization
    string showstring;
    public Text _text;
    public string otherName = "normal";
    string current;
    RefreshState refreshState;
    int index = 0;

    public void Init(Text _t, string _s, int _index, string _otherName)
    {
        refreshState = RefreshState.start;

        _s = float.Parse(_s).ToString("0.00");

        if (index == 0)
        {
            showstring = _s;
            current = _s;

        }
        else if (index == 1)
        {

            //if (_text.transform.parent.name == "transmitter" || _text.transform.parent.name == "temperature1")
            {
                showstring = _s;
                current = _s;
            }
            //else
            //{

            //    showstring = _s + "℃";
            //    current = _s + "℃";
            //}

        }
        else
        {

        }
        _text = _t;

        index = _index;
        otherName = _otherName;


        //Debug.LogError( "     " + _text.transform.parent.parent.parent.name);



    }

    public void SetString(string _s)
    {
        //if (refreshState == RefreshState.start)
        {
            _s = float.Parse(_s).ToString("0.00");

            if (index == 0)
            {
                current = _s;
                _text.text = "";
                _text.text = current;
            }
            else if (index == 1)
            {
                current = _s;

                _text.text = "";

                //if (otherName.Contains("PP"))
                //{

                //    Debug.LogError("    " + _text.text);

                //}
                //if (otherName.Contains("TP"))
                //{

                //    Debug.LogError("    " + _text.text);

                //}
                //if (otherName.Contains("LP"))
                //{

                //    Debug.LogError("    " + _text.text);

                //}
                //if (otherName.Contains("JP"))
                //{

                //    Debug.LogError("    " + _text.text);

                //}
                //if (otherName.Contains("YP"))
                //{

                //    Debug.LogError("    " + _text.text);

                //}

            }
            else
            {

            }
        }
    }

    // Update is called once per frame
    float timer = 1.0f;
    float stringLength = 0;
    float speed = 1.0f;
    int i = 0;
    public void Update()
    {

        if (_text == null)
            return;
        if (refreshState == RefreshState.start)
        {

            _text.text = "";
            refreshState = RefreshState.show;
        }
        if (refreshState == RefreshState.show)
        {
            stringLength += Time.deltaTime * speed;
            if (stringLength <= 1)
            {

                string temp = showstring.Substring(0, showstring.Length);
                //_text.text = temp.Substring(0, (int)stringLength - 1);
                //_text.text += "<color=#E7E7E9FF>" + temp.Substring((int)stringLength - 1, 1) + "</color>";              
                if (otherName.Contains("TP") || otherName.Contains("TF") || otherName.Contains("温度"))
                {
                    _text.text = ("<color=#E7E7E9FF>" + temp.Substring(0, showstring.Length) + "</color>" + "");

                }
                else if (otherName.Contains("PP") || otherName.Contains("PF") || otherName.Contains("压力"))
                {

                    _text.text = "<color=#E7E7E9FF>" + temp.Substring(0, showstring.Length) + "</color>" + "Mpa";

                }
                else if (otherName.Contains("JP") || otherName.Contains("YP") || otherName.Contains("LP") || otherName.Contains("JF") || otherName.Contains("YF") || otherName.Contains("LF") || otherName.Contains("计量泵") || otherName.Contains("油剂泵") || otherName.Contains("挤压机频率"))
                {
                    _text.text = "<color=#E7E7E9FF>" + temp.Substring(0, showstring.Length) + "</color>" + "Hz";
                }
                else if (otherName.Contains("电流"))
                {

                    _text.text = "<color=#E7E7E9FF>" + temp.Substring(0, showstring.Length) + "</color>" + "A";

                }

            }
            else if (stringLength > 1 && stringLength <= 2)
            {

                if (otherName.Contains("TP") || otherName.Contains("TF") || otherName.Contains("温度"))
                {
                    _text.text = "";
                }
                else if (otherName.Contains("PP") || otherName.Contains("PF") || otherName.Contains("压力"))
                {

                    _text.text = "Mpa";
                }
                else if (otherName.Contains("JP") || otherName.Contains("YP") || otherName.Contains("LP") || otherName.Contains("JF") || otherName.Contains("YF") || otherName.Contains("LF") || otherName.Contains("计量泵") || otherName.Contains("油剂泵") || otherName.Contains("挤压机频率"))
                {
                    _text.text = "Hz";
                }
                else if (otherName.Contains("电流"))
                {

                    _text.text = "A";

                }
            }
            else
            {
                if (otherName.Contains("TP") || otherName.Contains("TF") || otherName.Contains("温度"))
                {
                    _text.text = showstring.Substring(0, (int)showstring.Length) + ""; ;
                }
                else if (otherName.Contains("PP") || otherName.Contains("PF") || otherName.Contains("压力"))
                {
                    _text.text = showstring.Substring(0, (int)showstring.Length) + "Mpa";
                }
                else if (otherName.Contains("JP") || otherName.Contains("YP") || otherName.Contains("LP") || otherName.Contains("JF") || otherName.Contains("YF") || otherName.Contains("LF") || otherName.Contains("计量泵") || otherName.Contains("油剂泵") || otherName.Contains("挤压机频率"))
                {
                    _text.text = showstring.Substring(0, (int)showstring.Length) + "Hz";
                }
                else if (otherName.Contains("电流"))
                {

                    _text.text = showstring.Substring(0, (int)showstring.Length) + "A";

                }

            }

            if (stringLength > 3.0f)
            {
                //结束
                stringLength = 0;
                refreshState = RefreshState.end;
            }
        }
        if (refreshState == RefreshState.delay)
        {

            _text.text = "";


            stringLength += Time.deltaTime;
            if (stringLength >= timer)
            {
                refreshState = RefreshState.end;
            }
        }
        if (refreshState == RefreshState.end)
        {
            stringLength = 0;
            if (!showstring.Equals(current))
            {
                showstring = current;

            }
            refreshState = RefreshState.start;
        }

    }

    enum RefreshState
    {
        start,
        show,
        delay,
        end
    }
}
View Code

第二种刷新文字形式

技术分享图片
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class SensorTextRefresh1
{

    // Use this for initialization
    string showstring;
    public Text _text;
    string current;
    RefreshState refreshState;
    int index = 0;
    public void Init(Text _t, string _s)
    {
        refreshState = RefreshState.start;

        {
            showstring = _s + "";
            current = _s + "";
        }

        _text = _t;
    }
    public void SetString(string _s)
    {
        if (refreshState == RefreshState.start)
        {

            {
                current = _s + "";
                _text.text = "";
            }
        }
    }

    // Update is called once per frame
    float timer = 0.3f;
    float stringLength = 0;
    float speed = 4.0f;
    public void Update()
    {
        if (_text == null)
            return;
        if (refreshState == RefreshState.start)
        {
            _text.text = "";
            refreshState = RefreshState.show;
        }
        if (refreshState == RefreshState.show)
        {
            stringLength += Time.deltaTime * speed;
            int a = (int)(stringLength / 0.5f);
            if (a % 2 == 0)
            {
                //_text.text = showstring.Substring(0, (int)stringLength) + "█";
                //_text.text = showstring.Substring(0, (int)stringLength) + "<color=#c6ff00ff>█</color>";
                string temp = showstring.Substring(0, (int)stringLength);
                _text.text = temp.Substring(0, (int)stringLength - 1);
                _text.text += "<color=#E7E7E9FF>" + temp.Substring((int)stringLength - 1, 1) + "</color>";
            }
            else
            {
                _text.text = showstring.Substring(0, (int)stringLength);
            }
            //_text.text = showstring.Substring(0, (int)stringLength);
            if(_text.text.Equals(showstring))
            {
                //结束
                stringLength = 0;
                refreshState = RefreshState.delay;
            }
        }
        if (refreshState == RefreshState.delay)
        {
            stringLength += Time.deltaTime;
            if(stringLength>=timer)
            {
                refreshState = RefreshState.end;
            }
        }
        if(refreshState == RefreshState.end)
        {
            stringLength = 0;
            if(!showstring.Equals(current))
            {
                showstring = current;
            }
            refreshState = RefreshState.start;
        }

    }

    enum RefreshState
    {
        start,
        show,
        delay,
        end
    }
}
View Code

 

以上是关于unity 中让Text的文字动态刷新形式的主要内容,如果未能解决你的问题,请参考以下文章

为啥unity代码克隆不了物体

unity的ui文字打包后变小了

unity代码怎么删除一个物体,另一个物体停止

css中让文字和图片对齐的问题

如何在Sublime Text中添加代码片段

Unity手撸2048小游戏——背景文字控制