cc.url.raw获取的路径因平台而异?

项目中执行代码:cc.url.raw(“resources/prefabs/TestPrefab.prefab”),得到的结果因执行平台而异:

  1. 在模拟器下执行时,结果是:/library/imports/c9/c9cf9568-675e-45a7-8e75-a1bf4275251e.prefab,实际文件是/library/imports/c9/c9cf9568-675e-45a7-8e75-a1bf4275251e.json
  2. 在构建iOS, default模式下,结果是:res/raw-assets/c9/c9cf9568-675e-45a7-8e75-a1bf4275251e.prefab,实际文件是res/import/c9/c9cf9568-675e-45a7-8e75-a1bf4275251e.json

问题:

  1. 为什么一边是import下,一边是在raw_assets下?
  2. cc.url.raw中的文件的后缀名,不会自己转变成最后的json? 那是不是使用时不用加.prefab, 在得到的路径 后面去加.json?

2、这是正常的,这个 API 只是简单的路径转换而已,不会考虑到文件类型。实际上 Creator 也没有任何 API 或文档要求用户直接使用 xxx.prefab 这样后缀的路径。你应该直接写 TestPrefab.json 如果你需要的话
1、这个应该是因为上一个原因引起的,修改成 json 就好了

感谢Jera.

貌似还是没好呢?
你也说了这个api只是转换路径而已,那么为什么转换出来的文件路径跟真实的不一样呢?改成json也不一样,跟有没有后缀名没任何关系。

抱歉前面没注意看,因为 Prefab 不是 raw asset,只有 raw asset 才能用 .raw。对普通的 asset 来说,无法保证能拿到这个 json,因为 json 可能会合并。

我在模拟器里用cc.url.raw(“resources/config/xx.json”)会转换成"res/import/xxx.json",但是在安卓了就转化成了“res/raw-asset/xxx.json”,导致找不到资源,这该怎么弄

json 不是 raw asset,不能用这个 API,需要直接 loadRes