Skip to content
This repository has been archived by the owner on Dec 20, 2024. It is now read-only.

Latest commit

 

History

History
103 lines (91 loc) · 6.54 KB

TODOList.md

File metadata and controls

103 lines (91 loc) · 6.54 KB

工具开发

杂项

  • 处理多播委托+=/-=的gc问题(考虑替换城自己写的Delegates,list vs linkedlist,tmp有个FastAction,可以参考)
  • webgl支持
  • exception 调整优化
  • iservice的一些管理器抽象成接口,例如音效尽可能抽象为支持fmod、wwise无缝切换
  • vfs提供readasync接口,span接口

资源模块

  • 委托 对异步支援有限,不能等待整个方法体完成,例如OnRemoteAsset,ui出现时机有误,删掉所有资源,runtime模式就有问题,这种情况,就预先async加载,然后,委托里同步加载好了
  • unity2021测试spriteatlas,有bug,贴图冗余了 =》sbp不能勾选builtin,并且是打包图集,不能打包散图,然后维护一个散图路径到图集路径的关系,通过加载图集,再从图集里加载萨纳土
  • 资源路径长度,有没有必要进行优化,例如,只使用 Res/Runtime 后的路径,其他舍弃
  • 自动回收机制,尽可能让帧率更平滑,每帧不要回收过多资源;不开启的话,切场景才会卸载ab。
    • 似乎完全没必要做rc=0时的延迟回收机制,上层模块自己管理就好了,可以考虑对象池这一层来做
  • MoonAsset里的各种数组,可不可以无序?可以的话,直接反向循环,或者进行swap back操作,减少数组copy消耗
  • IAssetHandle池化,优先级低,先研究下其必要性,收益不大则不要考虑,先把其他整完后再来处理!=》上层有缓存了,可以不用考虑了
  • 资源热更新,加载流程梳理,使其更健壮
    • 自动补充下载 ui处理,下载时,提示ui
    • 需要新增一个API,用来校验本地资源完整性,通过manifest来处理
    • 缺失资源时,能够自己下载资源,并挂起逻辑,等待下载完毕,边玩边下,全异步化
    • 分包管理器,提供自动下载,手动下载机制。目的是,闲时可以把资源下全。
    • 覆盖安装、全新安装,都要删除dlc目录的manifest文件?换了url后,本地的manifest指向的还是旧的url
    • 避免读取到未下载完成的资源。下载时搞个.tmp后缀,下载完成后,去掉
    • 下载器组件测试,包括切片下载
    • 下载器组件,限速功能有问题,应提供一个默认速度,[最小,最大]速度,设置速度应在这个区间里
    • 自动补充下载相关异步api需要返回文件状态,例如GetRawFileAsync。同时事件也需要完善下,OnLoadAsset相关的。
  • builtinshader 和 收集的svb不是一个包有没有问题?
  • 编辑器下支持读取打包后ab,从dlc目录而非streammingasset目录
  • 大量资源文件,取文件 hash 前2位字符作为文件夹,避免同一文件夹文件数量过多
    • 这个考虑加个开关,需要上层无感知,保存直接走同一接口,保证编辑器、资源服同步,加载需要搞一个fallback机制,保证能共存,实现在LocalAssetLocator即可
    • 资源服上也要考虑
  • 打包log,rawbundle的清单也要=》manifest即所有数据了
  • 目前,场景ab的rc貌似是没有管理的,需要考虑卸载场景后,移除其rc,考虑使用一个管理类来处理
  • 优化raw bundle打包
    • 1.支持LoadRawAsset在编辑器下的加载?项目自己用宏控制
    • 2.框架只管理硬盘文件(wwise,bank,vfs),叫做rawfile。vfs相关打包加载,项目自己实现
    • 3.rawfile同bundle,维护一个assetpath到rawfile的映射,可以随意appendhash
    • 4.rawfile新增readalltext接口,现在只有readallbytes接口
  • tmp 打包要剔除掉 resources 目录?改起来貌似不怎么方便
  • api整理,优化

UI模块

  • UI估计还是要重构下,需要更清爽、简洁
    • 和多语言放一起考虑
  • 调研BD的FluxUI
    • 数据绑定的价值?没啥价值的话,就采用原来的UIBinder模式
    • 改装成异步逻辑,整合资源框架自动卸载
    • FluxUI没有Canvas层级管理
    • FluxUI没有Animation,继续完善
    • 异步加载时,需要在ui根层加载一个mask,屏蔽点击
    • 测试Components组合成window
    • 异步加载时,可能存在潜在层级问题。如果不会同时打开多个ui,应该还行
    • API整理,代码模板确定
  • 队列机制 弹窗显示,用于规范化各种弹窗,目前的感觉不太行,看看怎么改进
  • UI特效测试,特效mask
  • 全面屏幕适配
  • ui默认组件、资源 一键解包(upm的sample,或者unity package)
  • 窗口动画,使用接口,支持dotween、animator
  • sprite大图,封装工具类,加载时显示加载中,加载完成后,再赋值给ui组件
  • UI业务逻辑脚本的Awake等事件,需要在ui框架里try一下,避免crash,async void吞异常

多语言

  • 继续思考如何简化工作流
    • 方便接入已经开发完成的项目
    • 方便使用,可以快速预览多语言结果
    • 多语言字典,key到底是id,还是string=》直接枚举int,数据表工具看看要不要改

音效模块

  • unity自带的,重构下,支持自动卸载机制?管理器直接使用IAssetLoader。音效一定时间不用后,才会考虑自动卸载。
  • 支持wwise

表格工具

  • 异步接口
  • 最好支持,框架点击一个按钮就能直接使用(能不能做成 unity package)=》unity可以直接使用upm了
  • 打表前,删掉自动生成的文件,避免出现一些错误 =》 自己手动删除,更可控一些
  • 生成的文件,如何处理多dll(考虑弄成一个单独的dll,给其他所有程序集引用,感觉可以建一个asmdef),需要考虑到hybridclr的更新问题

行为树

  • 编辑器,看怎么处理 =》使用unity自带的graphview
  • 运行时,保持不变,继续优化

XConsole

  • 重写UI
  • 整理成package
  • 整理代码,测试
  • log过长后,要截断
  • 保存配置,OnApplicationPause平台差异处理

网络

  • Transport层抽象
    • LiteNetLib
  • 协议层抽象
    • MemoryPack

代码热更新

  • 接入正式版版hybirdclr