Unity实现数据变动实时在界面显示(通过委托的方式)

一、定义一个全局的委托

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

namespace Global
{
	public class Global_Parameter
	{
            /// <summary>
            /// 委托:动态数据
            /// </summary>
            public delegate void del_DynamicData(KeyValuesUpdate kv);

            /// <summary>
            /// 键值更新
            /// </summary>
            public class KeyValuesUpdate
            {
                private string _key;                                            //键
                private object _values;                                         //值

                /*只读属性*/
                public string Key
                {
                    get
                    {
                        return _key;
                    }

                }

                public object Values
                {
                    get
                    {
                        return _values;
                    }
            
            }

            //构造函数
            public KeyValuesUpdate(string key, object values)
            {
                this._key = key;
                this._values = values;
            }
         }
      }
}

二、编写动态数据类(实现数据的动态更新)

注意:该动态数据类(dynamicData)是UI界面脚本(Test_DynamicDatas.cs) 的内嵌类

//动态数据类
    internal class dynamicData
    {
        //声明事件:动态数据
        public static event del_DynamicData eventDynamicData;
        public static dynamicData _Instance;//本类实例

        #region   基础数据
        private string _PbAddress;                                               //种植地点
        private string _PbArea;                                                  //种植面积
        private string _PbTemperature;                                           //种植基地温度
        private string _PbDampness;                                              //种植基地湿度
        private string _PbIllumination;                                          //种植基地光照
        private string _PbPressure;                                              //种植基地气压
        private string _PbProductNumbers;                                        //种植基地总产量(年产量)

        #endregion

        #region   基础属性
        public string PbAddress
        {
            get { return _PbAddress; }
            set
            {
                _PbAddress = value;
                if (eventDynamicData!=null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbAddress", PbAddress);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbArea
        {
            get { return _PbArea; }
            set
            {
                _PbArea = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbArea", PbArea);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbTemperature
        {
            get { return _PbTemperature; }
            set
            {
                _PbTemperature = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbTemperature", PbTemperature);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbDampness
        {
            get { return _PbDampness; }
            set
            {
                _PbDampness = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbDampness", PbDampness);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbIllumination
        {
            get { return _PbIllumination; }
            set
            {
                _PbIllumination = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbIllumination", PbIllumination);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbPressure
        {
            get { return _PbPressure; }
            set
            {
                _PbPressure = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbPressure", PbPressure);
                    eventDynamicData(kv);
                }
            }
        }

        public string PbProductNumbers
        {
            get { return _PbProductNumbers; }
            set
            {
                _PbProductNumbers = value;
                if (eventDynamicData != null)
                {
                    KeyValuesUpdate kv = new KeyValuesUpdate("PbProductNumbers", PbProductNumbers);
                    eventDynamicData(kv);
                }
            }
        }

        #endregion

        //本类实例
        public static dynamicData GetInstance()
        {
            if (_Instance == null)
            {
                _Instance= new dynamicData("测试种植基地", (360).ToString(),
                (31).ToString(), (25).ToString(), (113).ToString(),
                (98 ).ToString(), (768).ToString()
                );
            }
            return null;
        }

        //构造函数
        public dynamicData(string pbAddress, string pbArea, string pbTemperature,
            string pbDampness, string pbIllumination, string pbPressure, string pbProductNumbers)
        {
            this.PbAddress = pbAddress;
            this.PbArea = pbArea;
            this.PbTemperature = pbTemperature;
            this.PbDampness = pbDampness;
            this.PbIllumination = pbDampness;
            this.PbPressure = pbPressure;
            this.PbProductNumbers = pbProductNumbers;

        }
    }

三、编写UI界面脚本

/***
*	Title:"可视化" 项目
*		主题:测试数据的动态显示
*	Description:
*		功能:XXX
*	Date:2019
*	Version:0.1版本
*	Author:Coffee
*	Modify Recoder:
*/

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

public class Test_DynamicDatas : MonoBehaviour
    {
        //测试值
        int num = 0;

        #region   显示UI
        public Text text_PlantingAddress;                                       //种植基地地点
        public Text text_Area;                                                  //种植面积
        public Text text_Temperature;                                           //温度
        public Text text_Dampness;                                              //湿度
        public Text text_Illumination;                                          //光照
        public Text text_Pressure;                                              //气压
        public Text text_ProductNumbers;                                        //产量

        #endregion


        private void Awake()
        {
            //事件注册
            dynamicData.eventDynamicData += DisplayPbAddress;
            dynamicData.eventDynamicData += DisplayArea;
            dynamicData.eventDynamicData += DisplayTemperature;
            dynamicData.eventDynamicData += DisplayDampness;
            dynamicData.eventDynamicData += DisplayIllumination;
            dynamicData.eventDynamicData += DisplayPressure;
            dynamicData.eventDynamicData += DisplayProductNumbers;
        }

        void Start()
		{
            //初始化
            FillDatas();

		}
    
        private void Update()
        {
            //测试使用
            num++;
            FillDatas(num);
        }

        #region   事件注册方法

        private void DisplayPbAddress(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbAddress"))
            {
                text_PlantingAddress.text = kv.Values.ToString();
            }   
        }

        private void DisplayArea(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbArea"))
            {
                text_Area.text = kv.Values.ToString();
            }
        }

        private void DisplayTemperature(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbTemperature"))
            {
                text_Temperature.text = kv.Values.ToString();
            }
        }

        private void DisplayDampness(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbDampness"))
            {
                text_Dampness.text = kv.Values.ToString();
            }
        }

        private void DisplayIllumination(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbIllumination"))
            {
                text_Illumination.text = kv.Values.ToString();
            }
        }

        private void DisplayPressure(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbPressure"))
            {
                text_Pressure.text = kv.Values.ToString();
            }
        }

        private void DisplayProductNumbers(KeyValuesUpdate kv)
        {
            if (kv.Key.Equals("PbProductNumbers"))
            {
                text_ProductNumbers.text = kv.Values.ToString();
            }
        }


        #endregion

        #region   填充数据
        public void FillDatas(int num=0)
        {
            dynamicData dynamic = new dynamicData("测试种植基地", (360 + num).ToString(),
                (31 + num).ToString(), (25 + num).ToString(), (113 + num).ToString(),
                (98 + num).ToString(), (768 + num).ToString()
                );

        }

        #endregion

    }//Class_end

四、运行测试

 

 

 

 

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值