一、定义一个全局的委托
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
四、运行测试