接口更新
This commit is contained in:
parent
ddf0f7ada0
commit
93292b1a59
|
@ -1,56 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
using Net;
|
|
||||||
using Net.Component;
|
|
||||||
using Object = UnityEngine.Object;
|
|
||||||
|
|
||||||
namespace BITKit
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public record GDNetSerivceProvider:INetProvider
|
|
||||||
{
|
|
||||||
public void ServerRpc(Action<string> action, params object[] pars)
|
|
||||||
{
|
|
||||||
SendAllRT(action.Method.Name,pars);
|
|
||||||
}
|
|
||||||
public void ServerRpc(Action<object> action, params object[] pars)
|
|
||||||
{
|
|
||||||
SendAllRT(action.Method.Name,pars);
|
|
||||||
}
|
|
||||||
public void AddRpcHandle(object rpcHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public void SendRT(int id,string rpcName, params object[] pars)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SendAllRT(string rpcName, params object[] pars)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ServerRpc(Action<Object> action, params object[] pars)
|
|
||||||
{
|
|
||||||
SendAllRT(action.Method.Name,pars);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClientRpc(Action<Object> action, params object[] pars)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ServerRpc(Action<GameObject> action, params object[] pars)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClientRpc(Action<GameObject> action, params object[] pars)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Cysharp.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using Net;
|
||||||
|
using Net.Client;
|
||||||
|
using Net.Component;
|
||||||
|
using Net.Share;
|
||||||
|
|
||||||
|
namespace BITKit
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 基于GDNet的网络服务
|
||||||
|
/// </summary>
|
||||||
|
[Serializable]
|
||||||
|
public class GDNetService:INetProvider,INetClient
|
||||||
|
{
|
||||||
|
//服务器地址与端口号
|
||||||
|
[Header(Constant.Header.Settings)]
|
||||||
|
[SerializeField] private string address;
|
||||||
|
[SerializeField] private ushort port;
|
||||||
|
[Header(Constant.Header.Components)]
|
||||||
|
//绑定GDNet的ClientManager
|
||||||
|
[SerializeField]
|
||||||
|
private ClientManager clientManager;
|
||||||
|
//内部事件系统
|
||||||
|
private readonly GenericEvent eventSystem = new();
|
||||||
|
//内部变量
|
||||||
|
[Header(Constant.Header.InternalVariables)]
|
||||||
|
//已保存的Rpc对象
|
||||||
|
private readonly List<object> rpcHandles = new();
|
||||||
|
//GDNet的网络客户端
|
||||||
|
private ClientBase client => clientManager.client;
|
||||||
|
/// <summary>
|
||||||
|
/// 是否已连接到服务端
|
||||||
|
/// </summary>
|
||||||
|
public bool IsConnected => client.Connected;
|
||||||
|
/// <summary>
|
||||||
|
/// 连接服务端的延迟
|
||||||
|
/// </summary>
|
||||||
|
public int Ping { get; private set; }
|
||||||
|
//客户端的基本回调
|
||||||
|
public event Action OnStartConnect;
|
||||||
|
public event Action OnConnected;
|
||||||
|
public event Action OnDisconnected;
|
||||||
|
public event Action OnConnectedFailed;
|
||||||
|
|
||||||
|
public void ServerCommand<T>(T command=default)
|
||||||
|
{
|
||||||
|
SendRT("CallServerCommand",command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RpcClientCommand<T>(T command=default)
|
||||||
|
{
|
||||||
|
SendRT("CallRpcClientCommand",command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClientCommand<T>(int id,T command=default)
|
||||||
|
{
|
||||||
|
SendRT("CallClientCommand",id,command);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UniTask<T> GetFromServer<T>(string addressablePath = "Internal")
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public UniTask<T> GetFromClient<T>(int id, string addressablePath = "Internal")
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddRpcHandle(object rpcHandle)
|
||||||
|
{
|
||||||
|
rpcHandles.Add(rpcHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddCommandListener<T>(Action<T> handle)
|
||||||
|
{
|
||||||
|
eventSystem.AddListener(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveCommandListener<T>(Action<T> handle)
|
||||||
|
{
|
||||||
|
eventSystem.RemoveListener(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendRT(string rpcName, params object[] pars)
|
||||||
|
{
|
||||||
|
clientManager.SendRT(rpcName,pars);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendTargetRT(int id, string rpcName, params object[] pars)
|
||||||
|
{
|
||||||
|
SendRT("CallTargetRT",id,rpcName,pars);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SendAllRT(string rpcName, params object[] pars)
|
||||||
|
{
|
||||||
|
SendRT("CallSendAllRT",rpcName,pars);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async UniTask<bool> Connect(string _address = "localhost", ushort _port = 27014)
|
||||||
|
{
|
||||||
|
if (client.Connected) return true;
|
||||||
|
client.host = _address;
|
||||||
|
client.port = _port;
|
||||||
|
foreach (var x in rpcHandles)
|
||||||
|
{
|
||||||
|
client.AddRpcHandle(x);
|
||||||
|
}
|
||||||
|
OnStartConnect?.Invoke();
|
||||||
|
if (await client.Connect())
|
||||||
|
{
|
||||||
|
OnConnected?.Invoke();
|
||||||
|
}
|
||||||
|
OnConnectedFailed?.Invoke();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disconnect()
|
||||||
|
{
|
||||||
|
if (IsConnected)
|
||||||
|
{
|
||||||
|
client.Close();
|
||||||
|
OnDisconnected.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void OnReceiveCommand(object command)
|
||||||
|
{
|
||||||
|
eventSystem.Invoke($"{command.GetType().FullName}.{Constant.System.Internal}",command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
* ⭐INetServer 服务端接口的基本定义
|
* ⭐INetServer 服务端接口的基本定义
|
||||||
* ⭐INetClient 客户端接口的基本定义
|
* ⭐INetClient 客户端接口的基本定义
|
||||||
*/
|
*/
|
||||||
|
using System;
|
||||||
using Cysharp.Threading.Tasks;
|
using Cysharp.Threading.Tasks;
|
||||||
namespace BITKit
|
namespace BITKit
|
||||||
{
|
{
|
||||||
|
@ -24,19 +25,21 @@ namespace BITKit
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 向服务端发送指令
|
/// 向服务端发送指令
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T">远程指令类型</typeparam>
|
||||||
void ServerCommand<T>();
|
void ServerCommand<T>(T command=default);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 向所有客户端发送指令
|
/// 向所有客户端发送指令
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T">远程指令类型</typeparam>
|
/// <typeparam name="T">远程指令类型</typeparam>
|
||||||
void RpcClientCommand<T>();
|
void RpcClientCommand<T>(T command=default);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 向单个客户端发送指令
|
/// 向单个客户端发送指令
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">客户端ID</param>
|
/// <param name="id">客户端ID</param>
|
||||||
|
/// <param name="command">指令实例</param>
|
||||||
/// <typeparam name="T">远程指令类型</typeparam>
|
/// <typeparam name="T">远程指令类型</typeparam>
|
||||||
void ClientCommand<T>(int id);
|
void ClientCommand<T>(int id,T command);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 从服务端获取数据
|
/// 从服务端获取数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -123,6 +126,7 @@ namespace BITKit
|
||||||
|
|
||||||
public interface INetClient
|
public interface INetClient
|
||||||
{
|
{
|
||||||
|
public event Action OnStartConnect;
|
||||||
public event Action OnConnected;
|
public event Action OnConnected;
|
||||||
public event Action OnDisconnected;
|
public event Action OnDisconnected;
|
||||||
public event Action OnConnectedFailed;
|
public event Action OnConnectedFailed;
|
||||||
|
|
Loading…
Reference in New Issue