BITKit/Packages/Runtime~/Unity/Common/Scripts/Net/NetMessageProxy.cs

71 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using System;
using System.IO;
namespace BITKit
{
public class MessageReader : NetMessageReader<NetMessageProxy.MyMessage>
{
public override NetMessageProxy.MyMessage ReadBinary(BinaryReader reader)
{
return new()
{
_string = reader.ReadString(),
_int = reader.ReadInt16(),
_float = reader.ReadSingle(),
};
}
public override void WriteBinary(BinaryWriter writer, NetMessageProxy.MyMessage value)
{
writer.Write(value._string);
writer.Write(value._int);
writer.Write(value._float);
}
}
public class NetMessageProxy : MonoBehaviour
{
[System.Serializable]
public record MyMessage
{
public string _string;
public int _int;
public float _float;
}
[SerializeReference, SubclassSelector] public INetMessager provider;
public MyMessage testMessage;
void Awake()
{
provider.Init();
DI.Register<INetMessager>(provider);
provider.Register<MyMessage>(OnReceiveMessage);
}
[BIT]
public void SendTestMessage()
{
BITAppForUnity.ThrowIfNotPlaying();
provider.Send(testMessage);
}
[BIT]
public void SelfDiagnostics()
{
BITAppForUnity.ThrowIfNotPlaying();
BIT4Log.Log<NetMessageProxy>(provider.GetDiagnostics());
}
void OnReceiveMessage(MyMessage message)
{
BIT4Log.Log<NetMessageProxy>($"已成功收到NetMessage:\n{message}");
}
}
#if UNITY_EDITOR
[UnityEditor.CustomEditor(typeof(NetMessageProxy))]
public class NetMessageProxyInspector : BITInspector<NetMessageProxy>
{
}
#endif
}