遇到的问题
游戏开发的过程中常常会产出很多素材,这些资源往往有部分是通用,有部分是特定场景的。但是我们在真正制作界面时又无法将又无法判断这个资源在后续是否会重复使用,因此,我们需要保证游戏中的通用素材被整理出来,在进行之后的图集整理之类的工作。这可以视图通过脚本进行解决。
解决思路
- 确定标准
- 确定多大的素材才有必要被整理为通用资源:游戏中的资源是被按模块加载的,它往往被要求将相同模块中的资源整理到一张图集中,以减少drawcall的数量。所以对于一些小的但是通用的资源,其实可以不与其他通用资源一起。而被视为这个模块的特点素材。
- 确定资源被引用多少次才能被视为通用资源。
- 确定通用的层级(2,3 可能在大部分项目中不会区分,因为基本可以打在一个图集上)
- 项目通用
- 模块通用
- 界面素材
- 整理素材
- 首先要确定在整理素材时,我们面对的是一个怎样的项目。以下是预设的一种情况,项目完全不处理通用素材,并且资源与预制体在不同模块间被互相引用(当开发者找不到素材时,就直接在其他位置找到这个素材并直接使用。)
- 可以根据以下思路整理素材:
- 确定相似资源,并找到他的引用关系。
- 相似的九宫格素材
- 大小不一致但是内容一致的素材
- 人工筛选相似资源
- 脚本筛选出相似图片之后,在由人工确认哪些资源可以被视为同一资源,并且为其指定一个素材。将引用关系集合到该素材中。
- 当资源不达通用资源的标准时,为每个模块都拷贝一个素材,当资源达到通用资源的标准时,将这个素材拷贝到通用素材的文件夹中。
- 确定模块的划分
- 以某一目录的某文件夹下的所有预制体作为一个模块
- 确定通用预制体只能使用通用资源
- 隔离开发环境与打包环境
- 不改变开发环境中的引用关系,而是将处理后的资源拷贝到一个新的目录下,来隔离脚本的操作。
- 其他资源管理工具
- 打印资源引用关系作为人工校验步骤
- 其他问题,可能引起模块间的交叉引用的行为
- 使用对方的预制体,而预制体上带了对方模块中的资源
- 确定相似资源,并找到他的引用关系。
具体实现
- 使用工具 :Python
- 目标
- 确定引用关系
- UID -> 路径 -> log文件
- 为所有的jpg和png创建一个对应的log文件,文件中包含了使用该文件的预制体路径
- 相似资源整理
- 将相似资源的log文件收集起来
- 配置相似资源的确定资源
- 用HTML做可视化界面
- 拷贝资源
- 处理预制体中的重定向
- 确定引用关系