历时两个月,终于将日麻跑起来了.这过程中遇到了很多问题.趁着还没忘记.做个备份
il2cpp打包
运行时报错
Unity/Assets/ModelView/MonoBehaviour/Init.cs
`
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
//这里原本采用 assembly.ManifestModule.Name,但是运行时会报错.故改为FullName
string assemblyName = assembly.FullName;
if (!assemblyNames.Contains(assemblyName.Split(',')[0]))
{
continue;
}
Game.EventSystem.Add(assembly);
}
`
mongo bson解析出错
同样的,在打完包后bson解析会有不支持的情况.而这些都是不会在编辑器模式发生的错误.所以在打包前关闭客户端所有有可能用到bson的地方.
在实践中发现如果序列化不统一.就容易出现问题.所以后续ET版本删除了客户端BSON.统一采用pb-net是非常务实的一个选择
服务端问题
这里面有不少老朋友.这次一并解决了
绑定公网ip问题
这是StartMachineConfig配置中的一条.{“_id”:1,”InnerIP”:”127.0.0.1”,”OuterIP”:”127.0.0.1”}.我们使用OuterIP作为gate暴露给客户端的地址.但是同时代码中也是socket绑定地址.在云服务器环境中这往往绑定不上.所以代码中强制修改为绑定0.0.0.0,而配置只是发送给客户端连接用.临时解决这个问题
Model层无法发送actor消息
因为偷懒缝合别人代码的原因.方法定义在model层.然而只有hotfix层才能发.这时候只能通过发布事件来处理了
Game.EventSystem.Publish( new EventType.MessageBroadCast() {actorIds= GetParent<MJRoomComponent>().AllPlayerActorids, actorMessage = new M2C_EnterMahjoneGame() }).Coroutine();