cocos2d-x3.3指定资源路径的代码  今天发现项目在VS调试时正常运行,直接在生成目录执行exe是黑屏

原因是资源文件加载的问题,找不到图片,所以黑屏了

那么cocos2d-x是怎么查找图片的呢

以下是关键部分源码:

获得完整路径

首先判断如果已经是绝对路径则return

其次从缓存中查询(即之前已经加载过的资源,以你传递的关键字做key会做路径缓存)

如果还是找不到则从文件名查找字典中做匹配

就会从查询路径数组来一个个匹配查找

到了这里就会发现m_searchPathArray里已经存在了一个该项目目录下的Resource文件夹路径

那显然是在初始化的时候哪里设置了默认路径,继续追踪

这里CCFileUtils在初始化的时候会将默认资源路径String添加到数组中

      继续查找m_strDefaultResRootPath是在哪里赋值

 

      查找到子类的构造函数,例如我当前是win32项目则CCFileUtilsWin32.cpp中

   这里因为是win32平台则就是通过

DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer)

这个win32API函数来获取当前的工作目录了,当然其他平台也应该是对应平台的获取方式

然后,打开项目属性管理器面板,调试子面板中,发现这里通过cocos2d-x模板生成的项目,

默认将工作目录设置为了$(ProjectDir)..\Resources,所以通过调试时得到的工作目录便是这个Resources文件夹了。

    那么最后,解决的办法就是将图片拷贝到exe所在的文件目录下,

    因为exe所在的目录就是当前工作目录,则可以匹配上!