本文主要是介绍GalForUnity加载时性能优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
加载时性能优化
针对GfuGraph加载的优化
GalForUnity通过GfuInstanceID来访问对象,内存中的对象通常保存在字典当中访问十分迅速。
但是对于保存在硬盘当中的对象,直接保存在字典里是不切实际的。
GalForUnity通过InstanceIDStorage来保存储存在硬盘中的对象。
InstanceIDStorage本质是一个保存了GfuInstanceID和对象Path的列表。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhnBa9sx-1637681727685)(images/image-20211123202811642.png)]
运行时仅会加载一个占用内存较小的InstanceIDStorage。通过InstanceIDStorage能够快速定位指定对象在硬盘中的位置,进行运行时加载,大大减少了程序寻找对象的开销。
请不要担心列表的查询速度,字段仅是以列表方式序列化保存,运行时会被还原成字典,依旧能够保证O(1)的访问速度。
点击初始化ID寄存器后,InstanceIDStorage会查找Resources目录下的所有包含GfuInstanceID的对象并且自动附加。
注意:运行时仅能够加载Resources(资源目录)目录下的文件!编辑器模式仅能够加载Assets(即项目目录)目录下的文件具体原因请参阅Unity打包过程。
注意:GameSystem被附加的时候会自动创建InstanceIDStorage,并附加该对象。如非必要,请不要尝试修改该对象,因为GfuInstanceID系统需要改对象判断内存或硬盘中是否存在相同InstanceID的对象,随意修改会导致InstanceID误判。容易导致Graph系统丢失对对象的引用。
注意:如果您在资源中创建了图并且引用了一个场景对象。当您打开新场景时图会丢失引用,原因是原先场景中的对象已经被全部销毁了。此时前往不能保存您原先的场景图,因为这会真的导致丢失引用。当您打开原先场景时,您对这个场景的对象引用会还原。这意味着一个资源图只能适用于一个场景
这篇关于GalForUnity加载时性能优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!