介入网络收发

This commit is contained in:
bob
2025-07-26 15:19:14 +08:00
parent 88cea0b5c6
commit 553153c61d
10 changed files with 490 additions and 542 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace NBC
@@ -73,10 +74,34 @@ namespace NBC
private async FTask StartAsync()
{
// 初始化框架
await NBC.Platform.Unity.Entry.Initialize(GetType().Assembly);
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
List<System.Reflection.Assembly> loadAssemblies = new List<System.Reflection.Assembly>();
foreach (var assembly in assemblies)
{
// 跳过系统程序集以提高性能(可选)
if (IsSystemAssembly(assembly))
continue;
loadAssemblies.Add(assembly);
}
await NBC.Platform.Unity.Entry.Initialize(loadAssemblies.ToArray());
_scene = await Scene.Create(SceneRuntimeMode.MainThread);
UI = _scene.AddComponent<UIComponent>();
OnInitialized?.Invoke();
}
// 判断是否是系统程序集(可选优化)
private static bool IsSystemAssembly(System.Reflection.Assembly assembly)
{
string assemblyName = assembly.FullName;
return assemblyName.StartsWith("System") ||
assemblyName.StartsWith("Microsoft.") ||
assemblyName.StartsWith("UnityEngine") ||
assemblyName.StartsWith("UnityEditor") ||
assemblyName.StartsWith("mscorlib") ||
assemblyName.StartsWith("netstandard") ||
assemblyName.StartsWith("nunit.") ||
assemblyName.StartsWith("Unity.");
}
}
}

View File

@@ -72,8 +72,9 @@ namespace NBC.Network.Interface
private void LoadInner(long assemblyIdentity)
{
var nmsl = AssemblySystem.ForEach(assemblyIdentity, typeof(IMessage));
// 遍历所有实现了IMessage接口的类型获取OpCode并添加到_networkProtocols字典中
foreach (var type in AssemblySystem.ForEach(assemblyIdentity, typeof(IMessage)))
foreach (var type in nmsl)
{
var obj = (IMessage) Activator.CreateInstance(type);
var opCode = obj.OpCode();

View File

@@ -231,6 +231,7 @@ namespace NBC.PacketParser
var memoryStreamLength = 0;
var messageType = message.GetType();
var memoryStream = Network.MemoryStreamBufferPool.RentMemoryStream(MemoryStreamBufferSource.Pack);
var nmsl = message.OpCode();
OpCodeIdStruct opCodeIdStruct = message.OpCode();
memoryStream.Seek(Packet.OuterPacketHeadLength, SeekOrigin.Begin);