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
    }
}

第二种刷新文字形式

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
    }
}

原文地址:https://www.cnblogs.com/Study088/p/9610190.html

时间: 2024-11-19 07:24:01

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

unity中计算ugui中Text控件的所需长度

背景是这样的,我在unity中需要在我按下某个按键的时候,然后显示出被射线碰撞到的物体的信息.物体的信息之前已经整理好成txt文本了.读取一下就可以了.那么这时候就有一个问题,因为每个物体的介绍信息不是一样的长度,那么如果当text控件里面文字的长度超过显示的长度时,超过部分就不再显示.那么这该怎么办. 我是通过去便利txt文本中的所有文字和符号,然后将所有换行符也就是/n的个数记录下来,然后计算一下对应字体大小一行有几个字,比如我的是18号字体,那么一行可以写30个字,然后计算一下txt文本中

3D语音天气球——在Unity中使用Android语音服务

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3D语音天气球(源码分享)--创建可旋转的3D球 二:通过天气服务,从网络获取时实天气信息并动态生成"3D球":3D语音天气球(源码分享)--通过天气服务动态创建3D球 三:Android语音服务和Unity的消息传递 四:Unity3D端和Android端的结合 前两篇文章已经介绍了如何创

Unity中对SQL数据库的操作

在Unity中,我们有时候需要连接数据库来达到数据的读取与储存.而在.NET平台下,ADO.NET为我们提供了公开数据访问服务的类.客户端应用程序可以使用ADO.NET来连接到数据源,并查询,添加,删除和更新所包含的数据. 对于ADO.NET,需要了解到Connection,Command,DataReader,DataAdapter,DataSet这几个对象,他们是操作数据库的重要对象.下面简要得介绍下这几个对象的作用以及功能(以SQL为例). 1.Connection:它是建立应用程序与数据

改变listview中item选中时文字的颜色

当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性 1 android:listSelector="@drawable/item_selector" 其中item_selector是在drawable目录下定义的一个xml文件,这种用于突出不同状态下显示效果的xml文件我们称之为selector: 1 2 3 4 5 6 7 <?xml version="1.0" encodin

Unity中www的基本应用

Unity的www主要支持HTTP中的GET和POST方式,GET方式会将请求附加到URL后,POST方式则是通过FORM的形式提交. 以下为Unity客户端的信息: using UnityEngine; using System.Collections; public class WebManger : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per fr

Unity中的GC以及优化

[简介] 常见的 Unity GC 知识点总结出来的思维导图 Unity 官方文档,正巧在博客园发现了已经有位大神(zblade)把原文翻译出来了,而且质量很高~,译文地址 在这里.下面我就可耻地把译文搬运了过来,作为上面思维导图的知识点补充. [介绍] 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程. Unity中将垃圾回收当作内存管理的一部

在Unity中实现简单的伪时间同步

在Unity中实现简单的伪时间同步,只是读取数据库所在电脑的当前时间 代码如下: using UnityEngine; using System.Collections; using System.Runtime.InteropServices; using System.Data; using System.Data.SqlClient; public class ChangeTime { //Kernel32.dll在32位系统和64位系统有区别,64位系统中需要设置为以管理员身份运行 [D

关于Unity中的NGUI和UGUI

用Unity开发2D游戏,有三套关系 1.GUI:Unity本身的对象 2.NGUI:以前在Unity中广泛来做2D的,是第三方的包,需要安装 3.UGUI:Unity5.X后,Unity找到NGUI的作者,开发了UGUI,变成内置于Unity中的包,官方主推 所有的元素都在Unity的UI工具栏 3D做2D游戏的方法: 1: 使用正交摄像机;2: 使用透视摄像机,将2D元素移动到合适的距离. 例如设计分辨率为 960x640, 得到在3D世界里面一个图片的大小w*h米,将这个图片移动到一定的距

菜鸟学习 - Unity中的热更新 - Lua和C#通信

孙广东 2015-4-6 热更新我是个菜鸟,感谢网上的各位的奉献,这次又当一回搬运工. 准备: 1.了解Lua的语法 推荐书籍<Lua程序设计 第二版> 2.使用ULua插件进行通信 尽量早上真机.因为Bug问题特别多. 大杂烩: 更新LUa其实也是更新资源. Lua被看作一个资源么.Lua代码都是运行时才编译的,不运行的时候就如同一张图片.一段音频一样,都是文件资源:所以更新逻辑只需要更新脚本,不需要再编译,因而Lua能轻松实现"热更新".运行效率由于使用反射,所以成为它