关于cocos2dx-3.5版本,资源路径的疑问

各位大神,本人是菜鸟一名,才接触cocos2dx不到2个月.我个人有强迫症,只要出了新版本,一定会用新版本.所以开始的时候,学了3.3,后来,出了3.4,最后又升级到3.5了.
但是升级到3.5时,出现了一个奇怪的问题,后来浪费了一点点时间才找到原因,特发此贴,以免再有小白和我一样遇到类似的问题.
环境(vs 2012, win32项目)
问题描述:
当用cocos studio做好csb资源文件后,按常规将文件发布并复制到项目目录下的 Resources里面.然后在vs里面调用资源,一切正常.
但是当用cocos studio再次修改资源后,发布并复制到 Resources 里,却发现,vs里面程序调用的,还是旧有的csb文件,而且在Resource里面手动增加的其他资源(图片,声音等),都无法被程序找到.
问题解决:
高度跟踪后发现问题出在默认资源路径上.
在旧版中(<3.5),默认资源路径是 Resources 目录,但是在3.5版本中默认资源路径却是和程序目录一样了,即 proj.win32\Debug.win32 .
解决的办法也很简单,
方法1,直接将Resources 资源复制到 proj.win32\Debug.win32 目录中就可以了.
方法2,每次运行前,将 proj.win32\Debug.win32 目录清空

虽然是解决了问题,但是总感觉这个方法比较笨,想问问各位大神有没有更好的办法,或者有没有办法,让每次vs在build的时候,自动复制一遍Resources 到程序目录中.

我就在用3.5。。。3.5版 的资源默认路径还是 Resources 。 你可能有什么其他原因吧。:9:

不会吧,难道只有我一个人是这个情况?
我也没有改过什么配置呀.
但是我的资源文件都是在proj.win32\Debug.win32目录下的哦.就算我把Resources清空,程序照样可以运行.

debug版本。
资源文件是从Resources自动复制到proj.win32\Debug.win32,源文件时间若不新就不复制了。:7:
exe执行的时候默认路径是exe所在目录。

我现在的问题就是,即使源文件更新了,资源文件,也没有自动复制到proj.win32\Debug.win32目录里去.

我找到原因了,是windows系统的问题.
在同一个目录下的文件,如果是直接覆盖的话,那么新的文件,仍然是保留了旧文件的"创建时间"与"修改时间",所以导致新生成的csb文件的创建时间和修改时间还是旧的时间.
如果这个时间比proj.win32\Debug.win32目录里的那个文件的时间更旧的话,那么就不会从Resources 复制到proj.win32\Debug.win32.
换句话说,即使Resources 里面的文件是最新的,但是如果他的创建与修改时间不是最新的话,仍然当他是旧的版本.
至于 为什么会产生这种奇葩的问题,我也不清楚.

有解决方案吗?

我也碰到这样的问题,不知道咋解决

原来自己复制错了。刚接触cocos2天,搞错了下

vector<string> searchPath; //搜索资源路径

searchPath.push_back(RESOURCE_PATH); //#define RESOURCE_PATH "Resources"

//增加另外一个搜索位置
string otherSearchPath = "../";
otherSearchPath += RESOURCE_PATH;
searchPath.push_back(otherSearchPath);

FileUtils::getInstance()->setSearchPaths(searchPath); //设置资源搜索路径

根源在于cocos\2d\platform\win32\CCFileUtilsWin32.cpp中的static void _checkPath()

老版本调用的是GetCurrentDirectoryW,获取当前路径,就是Resources目录
新版本调用的是_get_wpgmptr,获取可执行程序所在路径,就是Debug.win32目录

建议cocos2dx引擎的开发人员后面别再这样随意变化了,不然版本一升,到处是坑,多少得关注下向前兼容性吧,毕竟你是引擎啊!!

跟 cocos没关系把 vs会把资源复制到 程序同目录下的 复制这个操作没做而已
要不清理下工程?