123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using GameFramework;
- using GameFramework.DataNode;
- using UnityEngine;
- namespace UnityGameFramework.Runtime
- {
- /// <summary>
- /// 数据结点组件。
- /// </summary>
- [DisallowMultipleComponent]
- [AddComponentMenu("Game Framework/Data Node")]
- public sealed class DataNodeComponent : GameFrameworkComponent
- {
- private IDataNodeManager m_DataNodeManager = null;
- /// <summary>
- /// 获取根数据结点。
- /// </summary>
- public IDataNode Root
- {
- get
- {
- return m_DataNodeManager.Root;
- }
- }
- /// <summary>
- /// 游戏框架组件初始化。
- /// </summary>
- protected override void Awake()
- {
- base.Awake();
- m_DataNodeManager = GameFrameworkEntry.GetModule<IDataNodeManager>();
- if (m_DataNodeManager == null)
- {
- Log.Fatal("Data node manager is invalid.");
- return;
- }
- }
- private void Start()
- {
- }
- /// <summary>
- /// 根据类型获取数据结点的数据。
- /// </summary>
- /// <typeparam name="T">要获取的数据类型。</typeparam>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <returns>指定类型的数据。</returns>
- public T GetData<T>(string path) where T : Variable
- {
- return m_DataNodeManager.GetData<T>(path);
- }
- /// <summary>
- /// 获取数据结点的数据。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <returns>数据结点的数据。</returns>
- public Variable GetData(string path)
- {
- return m_DataNodeManager.GetData(path);
- }
- /// <summary>
- /// 根据类型获取数据结点的数据。
- /// </summary>
- /// <typeparam name="T">要获取的数据类型。</typeparam>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="node">查找起始结点。</param>
- /// <returns>指定类型的数据。</returns>
- public T GetData<T>(string path, IDataNode node) where T : Variable
- {
- return m_DataNodeManager.GetData<T>(path, node);
- }
- /// <summary>
- /// 获取数据结点的数据。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="node">查找起始结点。</param>
- /// <returns>数据结点的数据。</returns>
- public Variable GetData(string path, IDataNode node)
- {
- return m_DataNodeManager.GetData(path, node);
- }
- /// <summary>
- /// 设置数据结点的数据。
- /// </summary>
- /// <typeparam name="T">要设置的数据类型。</typeparam>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="data">要设置的数据。</param>
- public void SetData<T>(string path, T data) where T : Variable
- {
- m_DataNodeManager.SetData(path, data);
- }
- /// <summary>
- /// 设置数据结点的数据。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="data">要设置的数据。</param>
- public void SetData(string path, Variable data)
- {
- m_DataNodeManager.SetData(path, data);
- }
- /// <summary>
- /// 设置数据结点的数据。
- /// </summary>
- /// <typeparam name="T">要设置的数据类型。</typeparam>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="data">要设置的数据。</param>
- /// <param name="node">查找起始结点。</param>
- public void SetData<T>(string path, T data, IDataNode node) where T : Variable
- {
- m_DataNodeManager.SetData(path, data, node);
- }
- /// <summary>
- /// 设置数据结点的数据。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="data">要设置的数据。</param>
- /// <param name="node">查找起始结点。</param>
- public void SetData(string path, Variable data, IDataNode node)
- {
- m_DataNodeManager.SetData(path, data, node);
- }
- /// <summary>
- /// 获取数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <returns>指定位置的数据结点,如果没有找到,则返回空。</returns>
- public IDataNode GetNode(string path)
- {
- return m_DataNodeManager.GetNode(path);
- }
- /// <summary>
- /// 获取数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="node">查找起始结点。</param>
- /// <returns>指定位置的数据结点,如果没有找到,则返回空。</returns>
- public IDataNode GetNode(string path, IDataNode node)
- {
- return m_DataNodeManager.GetNode(path, node);
- }
- /// <summary>
- /// 获取或增加数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <returns>指定位置的数据结点,如果没有找到,则增加相应的数据结点。</returns>
- public IDataNode GetOrAddNode(string path)
- {
- return m_DataNodeManager.GetOrAddNode(path);
- }
- /// <summary>
- /// 获取或增加数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="node">查找起始结点。</param>
- /// <returns>指定位置的数据结点,如果没有找到,则增加相应的数据结点。</returns>
- public IDataNode GetOrAddNode(string path, IDataNode node)
- {
- return m_DataNodeManager.GetOrAddNode(path, node);
- }
- /// <summary>
- /// 移除数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- public void RemoveNode(string path)
- {
- m_DataNodeManager.RemoveNode(path);
- }
- /// <summary>
- /// 移除数据结点。
- /// </summary>
- /// <param name="path">相对于 node 的查找路径。</param>
- /// <param name="node">查找起始结点。</param>
- public void RemoveNode(string path, IDataNode node)
- {
- m_DataNodeManager.RemoveNode(path, node);
- }
- /// <summary>
- /// 移除所有数据结点。
- /// </summary>
- public void Clear()
- {
- m_DataNodeManager.Clear();
- }
- }
- }
|