Cocos Studio资源管理总结

【注意:该总结针对于Cocos Studio1.3之前的版本,1.3后由场景编辑器统一管理资源】
最近关于Cocos Studio资源导入导出的问题比较多,在这里我给大家做一个统一的讲解,如有不适之处,楼下请喷:8:
废话少说,直接入正文.:14:

准备

所谓兵马未动,粮草先行。开始做一个项目之前首先要准备好项目所需的资源。而且所有的素材都应该按照一定的标准分类,比如按照人物、界面、场景等分别归类,将碎图整理成plist大图等等。而且一定要注意不要有任何文件重名,即使不在同一个文件夹里。这些建议虽然都是非必须的,但对后期维护都是相当有帮助的。(-_-写这段只是想让你接着往下看,要么我也不知道该准备啥。)

导入

 需要导入时可以直接拖拽所有的资源文件及文件夹到资源面板,这样既方便又可以保证之前准备的资源结构不被打乱!如果是后期添加的资源将会被加到根目录下,因而可能不是你想要的目录结构,此时你可以直接在Windows Exporer打开项目文件夹,直接对资源进行调整,调整完成后再Cocos Studio资源面板刷新资源即可。

有心人会注意到我们的资源面板会有一个名叫“Resources”的根文件夹,我们导入的所有资源都是在这个文件夹内,可能对于美工类用户来说并不清楚这个文件夹的作用。这个文件夹是为了配合cocos2d-x而设计的,在cocos2d-x里所有的资源都要放到Resources文件夹内,在cocos2d-x中如果想读取资源只需要填写该资源相对于Resources文件的路径即可(不报括Resources本身)。

导出

导出功能会帮助我们整理当前项目,比如将碎图整理成plist大图功能,但是如果你的资源在其他项目中有使用,请谨慎使用该功能。最佳的做法是在准备时期直接归纳好哪些是需要重复使用的,并尽量把需要同时使用的图片压缩近同一张plist图片中,我想没人愿意为了加载一个小图标而加载一整张plist图片,毕竟都是要先读取到内存中(pis:特别是移动设备上那珍贵的内存)。
目前UI、动作、场景三个编辑器导出项目时都会生成一个(或多个)以项目名称命名(或项目名称加编号)的json文件,在这个(或这些些)json文件中会均记录当前项目所用到的资源的绝对路径。注意:这个路径信息是相对于Resources的路径,并非相对于配置文件的!很多用户导出文件后更改原有导出目录结构,导致在cocos2d-x程序中黑屏或其他不加载现象多数都是由此照成的!!! 2014、02/24更新,这个资源的路径并不是相对于Resources文件夹的路径,而是相对于导出json配置文件的路径,只不过我上边建议大家在项目开始前就规划好资源的管理,所以导出后的可以直接放到根目录了,并且还能保证统一用一套资源。

重用

   想要充分利用现有资源,减少重复资源,你必须要在准备时期就做好功课。不过智者千虑,必有一失,而且很多项目是并行开发的,所以不可能在一开始就将所有资源准备好。如果还需要继续添加资源,要注意不要随意更改原有文件及文件结构。

不过如果你的项目已经开始很久了,再回头重新开始肯定是不现实的,此时建议你可以尝试自己修改这些导出的json文件,将”fileNameData”的” path”属性修改为更新后的路径即可。如果是plist图片则只需要修改plist文件的路径(”plistFile “属性)即可(plist必须要和png在同一目录中)。

目前仅收集了这些注意事项,如果大家有好的建议可以回帖,我会及时更新帖子的。如果上面说的有错误也请大家使劲喷~:776: :776: :776: :776: :776:

讲得很好哇

果断顶一个

顶一个。

本人遇到个问题,在加载导入的scene后,无法添加新的sprite到scene中。

实例代码大概如下:
//Scene 的导入,成为了当前layer的子node

SceneNode= SceneReader::getInstance()->createNodeWithSceneFile(\“GameStartScene/Export/Resources/GameStartScene.json\”);
if(SceneNode== nullptr)
{
return nullptr;
}

this->addChild(SceneNode);

//自定义sprite的添加代码
Sprite* characterchoose1 = Sprite::create(\“Snipper.png\”,Rect(0,0,27,40);

characterchoose1->setPosition(Point(30,30));

SceneNode->addChild(characterchoose1);

进入程序后scene正常加载,sprite的创建也没有错误,但是无法如期看到Snipper.png显示在当前画布上

望不吝赐教

你好,我用cocostudio时,加入一个plist资源后,再修改这个plist,刷新为什么没有把新图片刷出来?

加载的scene里的都有zorder的,如果在代码里往加载进来的scene里addChild就得知道scene里的zorder排列呢

谢谢赐教,明白了。

尝试直接加到this上看是否能正常显示

建议专门为这个问题做一个教程
或者在已有的教程上,加一个说明
虽然这问题可能有时候显得有点低级,可是真心重要 :2:

感谢您的建议,不过这个问题可能用实例并不容易让大家理解其中的思想。

目前的编辑器导入资源会全部复制过去,不太方便,我们是这样解决的:

  1. 我们把所有的图片资源放在一个目录里,例如 c:/project/art/resource
  2. 新建cocostudio项目后,删除其中的Resources目录
  3. 然后创建一个软连接 Resources <==>c:/project/art/resource
  4. 打开刚才创建的项目,OK了。

其中第3步可以用windows命令行实现:
REM link_res.bat
rmdir Resources
mklink /J Resources “c:\project\art\resource”

如果是XP,可以下载junction,代替mklink.
希望对大家有所帮助

感谢您的建议,我们已经在1.3版本提供资源管理的解决方案。建议大家使用场景编辑器统一管理资源。

新手请教:请问如何使用场景编辑器来管理资源,能详细介绍下吗?

新手请教:请问如何使用场景编辑器来管理资源,能详细的介绍下吗?

要如何导出到一张plist文件中呢。。。如何实现

新版本已经讲过了,看下教程导航链接吧

你好,您可以在textpacker,或者用我们的任意一个编辑器,我们的编辑器提供该功能。而且我们后面会添加可视化的plist编辑工具。

初学者,真心不太会用。。。我就是按照教程做的。。。。可是导出的时候,20+的图片分到了6个文件中。。。我想让他在一起。。。。您说的是cocostudio中的功能吗。。您能稍微详细的说一下吗

求问 studio动画 我怎么把多张图导入到一个时间轴上?

暂时还未添加,待功能添加后会制作教程。