最近接的一个私活遇到的问题
##背景
这是一个用unity做的PC端软件,需要从本地读取excel文件,然后把需要的数据展示再软件里,并跟据要求对某些数据进行二次处理,然后发送给服务器,还会有服务器那边传过来的消息需要在PC端展示。
##问题一:数据的本地化储存
我接手的时候前人已经做了一部分本地化储存的工作,用的是SQL,但是我对SQL不熟悉,就改成了本地化JSON文件的储存,这里就需要一个路径了,Application.persistentDataPath这个路径,后面加上文件名字
这里是先找到路径,然后判断一下有没有文件,没有就创建。然后把要存储的数据准备好,写入文件。这里把类转JSON的时候注意不要用unity自带的JsonUtility,他无法转换类中类,也就是说如果你要写入的数据类的一个属性还是一个自定义类,就会出现错误。
这个是读取文件的方法,因为我只有这个数据需要存取,所以就没写参数。看到我读取的时候注释的代码了吗,那就是我上面提到的问题,无法解析类中类。
##问题二:Mono生命周期
这次因为是短链接,所以经常需要在切换界面时重新获取数据,所以就需要用到OnEnable生命周期,顺便再深入学习了一下生命周期的特点。
详细的执行顺序和每个生命周期特点
##问题三:网络请求
网络请求中有时候会遇到无法把JsonData类转Json的情况,经过查找才知道,有的JsonData的Value时null,这时候就会报错,无法转换,解决方法就是遍历,是null的赋一个默认值就好了。
另外一个问题就是,一般的网络请求我们是使用协程来做的,如果网络请求返回的比较慢,这边又关闭了挂在脚本的物体,协程也会停止,这点需要注意。