NetworkComponent.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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.Network;
  9. using System.Collections.Generic;
  10. using UnityEngine;
  11. namespace UnityGameFramework.Runtime
  12. {
  13. /// <summary>
  14. /// 网络组件。
  15. /// </summary>
  16. [DisallowMultipleComponent]
  17. [AddComponentMenu("Game Framework/Network")]
  18. public sealed class NetworkComponent : GameFrameworkComponent
  19. {
  20. private INetworkManager m_NetworkManager = null;
  21. private EventComponent m_EventComponent = null;
  22. /// <summary>
  23. /// 获取网络频道数量。
  24. /// </summary>
  25. public int NetworkChannelCount
  26. {
  27. get
  28. {
  29. return m_NetworkManager.NetworkChannelCount;
  30. }
  31. }
  32. /// <summary>
  33. /// 游戏框架组件初始化。
  34. /// </summary>
  35. protected override void Awake()
  36. {
  37. base.Awake();
  38. m_NetworkManager = GameFrameworkEntry.GetModule<INetworkManager>();
  39. if (m_NetworkManager == null)
  40. {
  41. Log.Fatal("Network manager is invalid.");
  42. return;
  43. }
  44. m_NetworkManager.NetworkConnected += OnNetworkConnected;
  45. m_NetworkManager.NetworkClosed += OnNetworkClosed;
  46. m_NetworkManager.NetworkMissHeartBeat += OnNetworkMissHeartBeat;
  47. m_NetworkManager.NetworkError += OnNetworkError;
  48. m_NetworkManager.NetworkCustomError += OnNetworkCustomError;
  49. }
  50. private void Start()
  51. {
  52. m_EventComponent = GameEntry.GetComponent<EventComponent>();
  53. if (m_EventComponent == null)
  54. {
  55. Log.Fatal("Event component is invalid.");
  56. return;
  57. }
  58. }
  59. /// <summary>
  60. /// 检查是否存在网络频道。
  61. /// </summary>
  62. /// <param name="name">网络频道名称。</param>
  63. /// <returns>是否存在网络频道。</returns>
  64. public bool HasNetworkChannel(string name)
  65. {
  66. return m_NetworkManager.HasNetworkChannel(name);
  67. }
  68. /// <summary>
  69. /// 获取网络频道。
  70. /// </summary>
  71. /// <param name="name">网络频道名称。</param>
  72. /// <returns>要获取的网络频道。</returns>
  73. public INetworkChannel GetNetworkChannel(string name)
  74. {
  75. return m_NetworkManager.GetNetworkChannel(name);
  76. }
  77. /// <summary>
  78. /// 获取所有网络频道。
  79. /// </summary>
  80. /// <returns>所有网络频道。</returns>
  81. public INetworkChannel[] GetAllNetworkChannels()
  82. {
  83. return m_NetworkManager.GetAllNetworkChannels();
  84. }
  85. /// <summary>
  86. /// 获取所有网络频道。
  87. /// </summary>
  88. /// <param name="results">所有网络频道。</param>
  89. public void GetAllNetworkChannels(List<INetworkChannel> results)
  90. {
  91. m_NetworkManager.GetAllNetworkChannels(results);
  92. }
  93. /// <summary>
  94. /// 创建网络频道。
  95. /// </summary>
  96. /// <param name="name">网络频道名称。</param>
  97. /// <param name="serviceType">网络服务类型。</param>
  98. /// <param name="networkChannelHelper">网络频道辅助器。</param>
  99. /// <returns>要创建的网络频道。</returns>
  100. public INetworkChannel CreateNetworkChannel(string name, ServiceType serviceType, INetworkChannelHelper networkChannelHelper)
  101. {
  102. return m_NetworkManager.CreateNetworkChannel(name, serviceType, networkChannelHelper);
  103. }
  104. /// <summary>
  105. /// 销毁网络频道。
  106. /// </summary>
  107. /// <param name="name">网络频道名称。</param>
  108. /// <returns>是否销毁网络频道成功。</returns>
  109. public bool DestroyNetworkChannel(string name)
  110. {
  111. return m_NetworkManager.DestroyNetworkChannel(name);
  112. }
  113. private void OnNetworkConnected(object sender, GameFramework.Network.NetworkConnectedEventArgs e)
  114. {
  115. m_EventComponent.Fire(this, NetworkConnectedEventArgs.Create(e));
  116. }
  117. private void OnNetworkClosed(object sender, GameFramework.Network.NetworkClosedEventArgs e)
  118. {
  119. m_EventComponent.Fire(this, NetworkClosedEventArgs.Create(e));
  120. }
  121. private void OnNetworkMissHeartBeat(object sender, GameFramework.Network.NetworkMissHeartBeatEventArgs e)
  122. {
  123. m_EventComponent.Fire(this, NetworkMissHeartBeatEventArgs.Create(e));
  124. }
  125. private void OnNetworkError(object sender, GameFramework.Network.NetworkErrorEventArgs e)
  126. {
  127. m_EventComponent.Fire(this, NetworkErrorEventArgs.Create(e));
  128. }
  129. private void OnNetworkCustomError(object sender, GameFramework.Network.NetworkCustomErrorEventArgs e)
  130. {
  131. m_EventComponent.Fire(this, NetworkCustomErrorEventArgs.Create(e));
  132. }
  133. }
  134. }