using System.Collections; using System.Collections.Generic; using UnityEngine; using Newtonsoft.Json; using System; using System.IO; namespace BITKit { public class MessageReader : NetMessageReader { 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(provider); provider.Register(OnReceiveMessage); } [BIT] public void SendTestMessage() { BITAppForUnity.ThrowIfNotPlaying(); provider.Send(testMessage); } [BIT] public void SelfDiagnostics() { BITAppForUnity.ThrowIfNotPlaying(); BIT4Log.Log(provider.GetDiagnostics()); } void OnReceiveMessage(MyMessage message) { BIT4Log.Log($"已成功收到NetMessage:\n{message}"); } } #if UNITY_EDITOR [UnityEditor.CustomEditor(typeof(NetMessageProxy))] public class NetMessageProxyInspector : BITInspector { } #endif }