Unity可视化资源依赖关系开发总结
时间:2023-03-24
本文章向大家介绍Unity可视化资源依赖关系开发总结,主要内容包括0x0 使用有向图作为数据结构、0x1 基于力导向的图布局算法、斥力-库仑定律、引力-虎克定律、运动阻力、调整物理参数得到布局结果、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
为了更好的查看资源依赖关系,有必要将资源数据和依赖关系按可视化的形式展现。
0x0 使用有向图作为数据结构
由于预制体资源依赖关系复杂,可能呈现网状关系,因此关系利用有向图的数据结构来表示是最合适的。
可视化界面中,资源用矩形表示,资源的依赖关系用连线和箭头表示
0x1 基于力导向的图布局算法
图的布局算法有很多,这里利用了基于力导向的布局算法。
这个算法的主要思想是将节点看作质点,模拟质点之间的斥力和引力关系,再加入阻力,然后进行迭代直到所有力达到力最终平衡状态,核心逻辑非常类似2d物理引擎。
算法中的主要需要模拟以下力:
斥力-库仑定律
具体来说,斥力使用了库仑定律,电荷之间的作用力,与距离的平方成反比,与电荷的电量成正比,这里电量我统一取1,方便利用库伦常数对力的大小做调整
引力-虎克定律
引力使用了弹簧力模拟,即虎克定律。力的大小和长度成正比,方向和弹簧伸长和压缩方向相反。
运动阻力
最后是运动阻力,如果没有运动阻力,所有质点最终很难达到静止状态。运动阻力和质点的速度成正比,方向和质点的速度方向相反。
调整物理参数得到布局结果
所以通过调整库伦常量,弹性常数和阻力系数这几个参数来调整布局最终的效果。
最后展示一下动态调整的效果。
原文地址:https://www.cnblogs.com/terrynoya/p/17251247.html
- VFS四大对象之四-struct file
- 《Redis设计与实现》读书笔记(二) ——Redis中的字典(Hash)
- 《Redis设计与实现》读书笔记(三) ——Redis中的链表
- 《Redis设计与实现》读书笔记(四) ——Redis中的跳跃表
- 解析Linux中的VFS文件系统之文件系统的注册(二)
- vivi虚拟摄像头驱动程序
- 系统架构 | 基于微服务架构,改造企业核心系统之实践
- 《Redis设计与实现》读书笔记(五) ——Redis中的整数集合
- 《Redis设计与实现》读书笔记(七) ——Redis对象综述及字符串对象实现原理
- 自动登录脚本
- 极致之处,精彩无限 - 优化了一半的SQL
- 编程修炼 | Scala中Stream的应用场景及其实现原理
- Linux之内存描述符mm_struct
- 大数据 | Spark的现状与未来发展
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- POJ - 3278 Catch That Cow 简单搜索
- Codeforce 239 B. Easy Tape Programming
- Codeforces Round #530 (Div. 1) 1098A Sum in the tree
- 非易失性WAL buffer实现解析(三)
- android实现切换日期左右无限滑动效果
- 疯子的算法总结(七) 字符串算法之 manacher 算法 O(N)解决回文串
- PostgreSQL WAL解析:构建WAL记录准备
- CodeForces - 225C. Barcode(DP)
- android studio 3.0 service项目背景音乐实现
- 疯子的算法总结(六) 复杂排序算法 ① 归并排序 merge_sort()
- PostgreSQL扫描方法综述
- CodeForces - 224C. Bracket Sequence (栈模拟)简单做法
- XLOG段文件跳号现象分析
- codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质
- 疯子的算法总结(五) 矩阵乘法 (矩阵快速幂)