DataNodeComponent.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework;
  8. using GameFramework.DataNode;
  9. using UnityEngine;
  10. namespace UnityGameFramework.Runtime
  11. {
  12. /// <summary>
  13. /// 数据结点组件。
  14. /// </summary>
  15. [DisallowMultipleComponent]
  16. [AddComponentMenu("Game Framework/Data Node")]
  17. public sealed class DataNodeComponent : GameFrameworkComponent
  18. {
  19. private IDataNodeManager m_DataNodeManager = null;
  20. /// <summary>
  21. /// 获取根数据结点。
  22. /// </summary>
  23. public IDataNode Root
  24. {
  25. get
  26. {
  27. return m_DataNodeManager.Root;
  28. }
  29. }
  30. /// <summary>
  31. /// 游戏框架组件初始化。
  32. /// </summary>
  33. protected override void Awake()
  34. {
  35. base.Awake();
  36. m_DataNodeManager = GameFrameworkEntry.GetModule<IDataNodeManager>();
  37. if (m_DataNodeManager == null)
  38. {
  39. Log.Fatal("Data node manager is invalid.");
  40. return;
  41. }
  42. }
  43. private void Start()
  44. {
  45. }
  46. /// <summary>
  47. /// 根据类型获取数据结点的数据。
  48. /// </summary>
  49. /// <typeparam name="T">要获取的数据类型。</typeparam>
  50. /// <param name="path">相对于 node 的查找路径。</param>
  51. /// <returns>指定类型的数据。</returns>
  52. public T GetData<T>(string path) where T : Variable
  53. {
  54. return m_DataNodeManager.GetData<T>(path);
  55. }
  56. /// <summary>
  57. /// 获取数据结点的数据。
  58. /// </summary>
  59. /// <param name="path">相对于 node 的查找路径。</param>
  60. /// <returns>数据结点的数据。</returns>
  61. public Variable GetData(string path)
  62. {
  63. return m_DataNodeManager.GetData(path);
  64. }
  65. /// <summary>
  66. /// 根据类型获取数据结点的数据。
  67. /// </summary>
  68. /// <typeparam name="T">要获取的数据类型。</typeparam>
  69. /// <param name="path">相对于 node 的查找路径。</param>
  70. /// <param name="node">查找起始结点。</param>
  71. /// <returns>指定类型的数据。</returns>
  72. public T GetData<T>(string path, IDataNode node) where T : Variable
  73. {
  74. return m_DataNodeManager.GetData<T>(path, node);
  75. }
  76. /// <summary>
  77. /// 获取数据结点的数据。
  78. /// </summary>
  79. /// <param name="path">相对于 node 的查找路径。</param>
  80. /// <param name="node">查找起始结点。</param>
  81. /// <returns>数据结点的数据。</returns>
  82. public Variable GetData(string path, IDataNode node)
  83. {
  84. return m_DataNodeManager.GetData(path, node);
  85. }
  86. /// <summary>
  87. /// 设置数据结点的数据。
  88. /// </summary>
  89. /// <typeparam name="T">要设置的数据类型。</typeparam>
  90. /// <param name="path">相对于 node 的查找路径。</param>
  91. /// <param name="data">要设置的数据。</param>
  92. public void SetData<T>(string path, T data) where T : Variable
  93. {
  94. m_DataNodeManager.SetData(path, data);
  95. }
  96. /// <summary>
  97. /// 设置数据结点的数据。
  98. /// </summary>
  99. /// <param name="path">相对于 node 的查找路径。</param>
  100. /// <param name="data">要设置的数据。</param>
  101. public void SetData(string path, Variable data)
  102. {
  103. m_DataNodeManager.SetData(path, data);
  104. }
  105. /// <summary>
  106. /// 设置数据结点的数据。
  107. /// </summary>
  108. /// <typeparam name="T">要设置的数据类型。</typeparam>
  109. /// <param name="path">相对于 node 的查找路径。</param>
  110. /// <param name="data">要设置的数据。</param>
  111. /// <param name="node">查找起始结点。</param>
  112. public void SetData<T>(string path, T data, IDataNode node) where T : Variable
  113. {
  114. m_DataNodeManager.SetData(path, data, node);
  115. }
  116. /// <summary>
  117. /// 设置数据结点的数据。
  118. /// </summary>
  119. /// <param name="path">相对于 node 的查找路径。</param>
  120. /// <param name="data">要设置的数据。</param>
  121. /// <param name="node">查找起始结点。</param>
  122. public void SetData(string path, Variable data, IDataNode node)
  123. {
  124. m_DataNodeManager.SetData(path, data, node);
  125. }
  126. /// <summary>
  127. /// 获取数据结点。
  128. /// </summary>
  129. /// <param name="path">相对于 node 的查找路径。</param>
  130. /// <returns>指定位置的数据结点,如果没有找到,则返回空。</returns>
  131. public IDataNode GetNode(string path)
  132. {
  133. return m_DataNodeManager.GetNode(path);
  134. }
  135. /// <summary>
  136. /// 获取数据结点。
  137. /// </summary>
  138. /// <param name="path">相对于 node 的查找路径。</param>
  139. /// <param name="node">查找起始结点。</param>
  140. /// <returns>指定位置的数据结点,如果没有找到,则返回空。</returns>
  141. public IDataNode GetNode(string path, IDataNode node)
  142. {
  143. return m_DataNodeManager.GetNode(path, node);
  144. }
  145. /// <summary>
  146. /// 获取或增加数据结点。
  147. /// </summary>
  148. /// <param name="path">相对于 node 的查找路径。</param>
  149. /// <returns>指定位置的数据结点,如果没有找到,则增加相应的数据结点。</returns>
  150. public IDataNode GetOrAddNode(string path)
  151. {
  152. return m_DataNodeManager.GetOrAddNode(path);
  153. }
  154. /// <summary>
  155. /// 获取或增加数据结点。
  156. /// </summary>
  157. /// <param name="path">相对于 node 的查找路径。</param>
  158. /// <param name="node">查找起始结点。</param>
  159. /// <returns>指定位置的数据结点,如果没有找到,则增加相应的数据结点。</returns>
  160. public IDataNode GetOrAddNode(string path, IDataNode node)
  161. {
  162. return m_DataNodeManager.GetOrAddNode(path, node);
  163. }
  164. /// <summary>
  165. /// 移除数据结点。
  166. /// </summary>
  167. /// <param name="path">相对于 node 的查找路径。</param>
  168. public void RemoveNode(string path)
  169. {
  170. m_DataNodeManager.RemoveNode(path);
  171. }
  172. /// <summary>
  173. /// 移除数据结点。
  174. /// </summary>
  175. /// <param name="path">相对于 node 的查找路径。</param>
  176. /// <param name="node">查找起始结点。</param>
  177. public void RemoveNode(string path, IDataNode node)
  178. {
  179. m_DataNodeManager.RemoveNode(path, node);
  180. }
  181. /// <summary>
  182. /// 移除所有数据结点。
  183. /// </summary>
  184. public void Clear()
  185. {
  186. m_DataNodeManager.Clear();
  187. }
  188. }
  189. }