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所在的目录就是当前工作目录,则可以匹配上!