为了更好的查看资源依赖关系,有必要将资源数据和依赖关系按可视化的形式展现。

0x0 使用有向图作为数据结构

由于预制体资源依赖关系复杂,可能呈现网状关系,因此关系利用有向图的数据结构来表示是最合适的。

Addressables 资源依赖管理_数据结构

可视化界面中,资源用矩形表示,资源的依赖关系用连线和箭头表示

0x1 基于力导向的图布局算法

图的布局算法有很多,这里利用了基于力导向的布局算法。
这个算法的主要思想是将节点看作质点,模拟质点之间的斥力和引力关系,再加入阻力,然后进行迭代直到所有力达到力最终平衡状态,核心逻辑非常类似2d物理引擎。
算法中的主要需要模拟以下力:

斥力-库仑定律

具体来说,斥力使用了库仑定律,电荷之间的作用力,与距离的平方成反比,与电荷的电量成正比,这里电量我统一取1,方便利用库伦常数对力的大小做调整

引力-虎克定律

引力使用了弹簧力模拟,即虎克定律。力的大小和长度成正比,方向和弹簧伸长和压缩方向相反。

运动阻力

最后是运动阻力,如果没有运动阻力,所有质点最终很难达到静止状态。运动阻力和质点的速度成正比,方向和质点的速度方向相反。

调整物理参数得到布局结果

所以通过调整库伦常量,弹性常数和阻力系数这几个参数来调整布局最终的效果。

最后展示一下动态调整的效果。

Addressables 资源依赖管理_数据结构_02