78. 2023-09-17周总结

  1. 账号系统完善
  2. 3D项目资源整理,代码重构
  3. 安装Android SDK 28问题
  4. nginx证书缓存

1. 账号系统完善

为账号系统增加了绑定、解绑功能,另外还增加了一个操作表,好追溯玩家的登录、绑定、解绑的操作。

在做这个功能的时候遇到了个报错:Entity Framework Core Could not save changes. Please configure your entity type accordingly.

看了半天找不到问题,最后通过注释大法,发现其中的string AccoutId字段注释掉之后就能正常,最后发现数据库中的char的长度设置太小了,比较坑爹的报错,不提示哪个字段有问题。

另外还遇到个中文乱码问题,检查了数据库的编码和存储的编码都是Utf8,但还是乱码,最后在ConnectionString里面补充:CharSet=utf8;才解决。

2. 3D项目资源整理,代码重构

版本发完了,上周也总结了一些问题,这周抽时间牵头做了一些资源整理和代码重构。

资源整理主要整理了下Sprite的文件夹,UI和场景中的Sprite穿插在一起使用比较混乱,按照UI和场景分开,同时UI按照界面分开,场景按照功能部件分开。

代码重构主要思路就是解耦,之前太多的管理类,所有东西堆在管理类里面。按照组件化的思想去重新设计,每个脚本是一个功能脚本,只干较少的较为独立的事情,场景中的障碍,建筑,小人都是实体,按照需求包含不同的功能脚本,这样既能解耦也能复用代码。

这一块预计还得花2~3周才能彻底整理完成。

3. 安装Android SDK 28问题

Unity安装的时候默认只安装了29和30的SDK,但是我们的发行那边只支持28的SDK,所以需要手动安装下28的SDK。

按照之前的流程进入到Unity对应的SDK目录下执行./sdkmanager install "platforms;android-28"即可,但是在打包机上执行之后报Failed to install android-sdk: "java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema"

这个原因是使用高版本的Java导致,安装Java8之后,通过export JAVA_HOME=java8/path映射到Java8目录之后,再次执行之后可以正常安装

4. nginx证书缓存

周末证书到期了,但是明明已经替换成新证书,并且调用nginx -s reload了,但是还是出现用的旧的证书,导致证书过期问题。

猜想nginx有缓存,因为比较紧急,最后换了个证书文件名来解决。

查了资料发现nginx确实会缓存证书,并且nginx -s reload不会刷新证书,需要通过重启nginx才能刷新。