我看大家解决方案都是缓解,没有真正意义解决卡顿,我想到一个,理论方面,可能不行。具体如下:
windows下cmd不是有mklink命令可以创建软连接,就是在打开编辑器前Python可以批量处理mklink命令,这样可以令其它目录的项目部分文件创建出一个符号在cocos项目的资源文件夹里,cocos creator不是会遍历资源文件夹吗,会遍历这些符号,这些符号不是真正的项目资源,相当于其它路径下的项目资源创建一个超链接在这里。在cocos creator访问资源时这些“假文件”会重定向到真正的项目资源文件。
那这样有什么用呢,我们可以将项目文件(场景,图片,模型)分组,按需加载,然后使用时只让Python将部分超链接放在资源文件夹里,然后编辑器打开时就能避免打开完整项目而导致卡顿,而且项目的资源文件夹里的也不是真正的文件,只是个超链接引到真正的项目文件,不会占用双倍磁盘空间。在关闭编辑器时Python监听编辑器进程关闭然后将里面的超链接删除就行了,真正的项目资源保存在其它的任意目录并没有被删除掉。
举个例子,不然可能听不懂。我有30g的项目文件(假设,可能没这么夸张) 然后我需要制作商店场景。通常情况编辑器直接打开项目会加载这30g的资源,可以想象,电脑估计会崩溃。但是我现在将这30g移动到其它路径,并且分组,有关于商店的场景和处理脚本仅仅占了10mb,其它都是暂时不需要处理的资源。然后Python读取到这个设定的商店分组,会将设置的有关商店的文件自动创建软链接按层级关系放在原来理论上编辑器会读取的目录,这时候打开编辑器,由于软链接,编辑器会到真正的项目目录查找那些要用的文件,不会加载30g,而是仅仅加载了10mb的内容,所以编辑器会很快,不会卡顿。修改场景时,真正的场景文件也会同步修改。然后关闭时Python自动监听对应cocos creator进程关闭,然后删除这些软链接文件。
这种方法每次文件批量加载,不会占用双倍磁盘空间,而且方便进行分组加载模块化管理项目,并且编辑器不会因为项目过大而卡顿,社区里同类型的解决方案比较麻烦,这个由于是Python自动管理的所以可以基本无感。我打算利用空闲时间制作插件免费放到商城。
能力不足,请大佬指点。
软链接批量加载这些文件不卡的结论怎么得出的,做过实验?
我的方案是精简自己的开发工程,删除自己那些动态加载的bundle 比如物品图标,英雄spine文件等,减少工程的大小,预览游戏的时候通过代理去测试机上加载这些资源,体验下来开发上还是会快不少。可以自己实现下,也可以看看我写的这个插件
分组比较明确的工程可以,按目录设置junction。每次打开的时候,只放自己用到的目录组,其他目录就看不到了。
就是要小心,项目没有全局资源,会出现一些bug,例如引用丢失,id重复之类的。
这时候就体现基于路径的资源管理的好处了
你可能理解错了,实际上是加载真实文件,只是套了个壳,没有和速度直接关联
我的理论基础是“按需引入”尽可能减小资源加载数量以增强编辑器的处理速度。
所以资源复制粘贴也可以,只是因为“复制粘贴大文件的过程中由于计算机配置需要大量时间”,而软链接不会复制文件本体,只是放个链接,不会让开发者在资源管理器复制粘贴的过程中耗时间。软链接是优化,不是影响编辑器处理速度的因素,影响编辑器的因素是总文件大小,我只是仅仅让编辑器加载要用的文件,所以理论上编辑器不会因为项目大小而卡顿
可以使用软连接的方式使用资源,这个我们项目一早就这样用了。不过要做好资源分离,模块独立