1.数据节点是可以对游戏中产生的临时变量进行存储或者读取的节点,要是用数据节点,首先要确保在Constant中含有DataNote脚本。新建一个脚本名为:“Constant.DataNode”,具体代码如下:
namespace MyGameNameSpace
{
public static partial class Constant
{
/// <summary>
/// 数据节点,用来存储游戏中的临时变量
/// </summary>
public static class DataNode
{
/// <summary> 玩游戏的时间 </summary>
public const string GamePlayTime = "DataNode.GamePlayTime"; (例)
}
}
}
注:在定义临时变量时,在此脚本中都需要定义为“public const string”的形式,在存储或读取的时候再规定其具体形式。定义名称的等号后为“DataNode.xxxx”。
2.其次就可以进行数据的储存或者读取了。首先是存储如下:
GameEntry.DataNode.SetData(Constant.DataNode.IsReLife, false);
注释:格式为SetData<临时变量类型>(临时变量名称,临时变量的值);
变量读取如下:
GameEntry.DataNode.GetData(Constant.DataNode.CurrentVehicle);
注释:格式为GetData<临时变量类型>(临时变量名称);
注意事项:
当运用临时节点存储变量时,如果每次运行都需要读取,有时会出现第一次运行报空的情况(节点并没有生成或者节点内没有值),所以在这里我们使用GetOrAddNode方法进行规避。示例代码如下:
IDataNode node = GameEntry.DataNode.GetOrAddNode(Constant.DataNode.IsReLife);
VarBool data = node.GetData<VarBool>();
if (data != null && GameEntry.DataNode.GetData<VarBool>(Constant.DataNode.IsReLife) == true)
{
m_Timer = GameEntry.DataNode.GetData<VarFloat>(Constant.DataNode.ReLifeTimer);
Debug.Log("当前时间为:" + m_Timer);
GameEntry.DataNode.SetData<VarBool>(Constant.DataNode.IsReLife, false);
}
如上述代码所示,首先创建一个IDataNode类的变量进行接受GetOrAddNode的临时节点变量,再新建一个类型相对应的类变量去接受node的GetData<相对应类型>();的值,若data!=null则说明有值。若data=null也不会报错而会去添加临时节点。