RenderTexture::saveToFile 居然写死保存的路径到getWritablePath ,这也是神奇的做法

自己生成了绝对路径去保存截图,死活找不到。看源码发现,居然路径是写死的:


设计API的兄弟,为什么就不能提供fullPath让开发者自己去填?而是想当然的认为只要保存到默认的文件夹就好了?

手机上WritablePath才有可写的权限

并不是只有app自己的目录才有可写权限,你可以了解下安卓手机.

我想很多人对android/ios并不了解,随便设置个路径多半会保存失败,保存到WritablePath可保万无一失,各个平台都是一样的代码。

Cocos是开源的,自己要修改也很容易。

大部分应用保存的资源不都是在这个主路径下吗?其他路径有没有权限都不好说。而且你这样乱写路径,用户卸载能移除资源吗

1、什么叫乱写路径。
你可以打开任意一个android 手机,找到/mnt/sdcard/下面,你能找到的大厂APP基本上都有自己公司或者产品命名的文件夹,放置一些需要持久化的文件和设置(卸载掉再安装仍然需要存在的东西)

2、这里讨论的是API的设计,而不是为什么要使用除APP自身文件夹以外的文件夹的目的和意义。

@zxh19821
当然自己修改容易得很,但是好的一个接口设计,特别是这种底层的接口,应该是灵活的,而不是写死一个路径的。
当然,如果一定要贯彻写死路径,为什么jsb.fileUtils不这样干?
明显就是写代码的人比较随意。

有可能是设计人员疏忽了,不过不用这么激动的:grin:

+1, 确实是 api 设计的有问题.

在不改变现有参数的情况下可以修改为判断 filename 是否为绝对路径, 是的话就别拼接 writeablepath 了.

这里如果可以自定义路径,你写了一个路径,在 Android 上可以存储,但是当想发布到 iOS 的时候,路径是否就可能变得不可用了? 如果存在这种情况的话,改成可以指定路径,还是需要考虑一下的

自定义路径肯定是需要考虑平台的, 不同的平台传入不同的路径.

开源的自己想怎么改就改吧。写这行代码的人考虑的角度不同而已