73. 2023-08-13周总结
- sdk框架
- git clone Out of memory, malloc failed (tried to allocate 2147483648 bytes)
- 新手引导讨论
- 弧线问题
1. SDK框架
计划在框架集成一套SDK框架,具体使用就是如果项目想接某个SDK,那直接在Package Manager里面引入这个包(比如Babu.Client.SDK.Facebook),引入之后配置项目的参数就可以用Facebook的指定功能了,整个过程不会对业务代码有侵入。
设计核心就是用代理模式+工厂模式来封装SDK实现,定义了常用的需要SDK功能的管理类以及对应的SDK实现接口,比如充值我们会有一个PurchaseServiceManager,以及一个IPurchaseService,IPurchaseServiceFactory。
PurchaseServiceManager代理了IPurchaseService的接口,上层只通过PurchaseServiceManager操作所有的充值接口,不用关心里面具体是哪个IPurchaseService实现。
为了在编辑器下使用PurchaseServiceManager,还需要一套编辑器下的IPurchaseService实现,只是简单模拟下充值过程。
其他SDK如果想替换PurchaseServiceManager,为了避免对业务逻辑的侵入,可以使用Unity的属性[RuntimeInitializeOnLoadMethod]来自动注入到PurchaseServiceManager中。
其他细节:
- 为了避免SDK之间需要修改android或者ios配置工程产生冲突,可以使用unity-jar-resolver来避免
- 有些情况可能接了Facebook但是不想用它的账号,可以通过配置开关在RuntimeInitializeOnLoadMethod中不去注入到AccountServiceManager中即可
- 如果海外GP和AppStore的充值,推荐使用Unity的In App Purchasing来做,避免很多繁琐问题,唯一的不好就是引入这个之后还得关联Unity Service项目
2. git clone Out of memory, malloc failed (tried to allocate 2147483648 bytes)
原因是因为http/postBuffer开太大了,调用git config --global http.postBuffer 100m
后解决
3. 新手引导讨论
之前同事做了一版新手引导,效率慢而且很容易出问题,所以组织一次新手引导怎么设计问题,这个后续等验证过了再单独发
4. UIParticle曲线运动问题
在使用UIParticle attractor component做曲线运动的时候遇到个问题,如果在屏幕边缘飞的话会几率朝屏幕外拉曲线,导致飞出屏幕外。
所以想改他的实现增加一个屏幕边缘判断,如果接近边缘,就朝屏幕里面拉曲线。
看了下代码主要使用Vector3.Slerp
实现的,这个东西不太好理解,也是看了下其他资料和打印实际的坐标之后才有一些认识。
这里有三个点一个是源点(0,0),另外两个就是起始点start_pos和目标点target_pos,曲线运动的中心在(0, 0),如果你起始点在target_pos - (0, 0) 方向右边,则生成的曲线就会往右拐
因为特效做的时候是范围生成,所以会出现一下往左拐,一下往右拐的情况。
修复方式就是在代码里判断如果在屏幕边缘,强行将particle的位置设置到target_pos - (0, 0)的右边。在UIParticleAttractor的Attract中增加相关代码:
1 | if (adjustPosition == false) |