关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  在我们使用CocosStudioV3.10创建的场景(csb文件)导入Cocos2d-xV3.17.2的项目中并未改变场景,原因是项目索引路径发生了改变,所以导致我们更改原来的索引路径中的csb文件并未修改代码中的索引的场景。

  接下来模拟问题场景并提供解决方案。

问题场景

  使用CocosStudioV3.10创建一个场景(该场景是960*640分辨率的)。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  然后发布场景【ctrl+p】,将csb文件导入Cocos2d-xV3.17.2。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  导入Cocos2d-xV3.17.2项目中的proj.win32中的res文件夹下。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  修改AppDelegate.cpp中的屏幕大小。

static cocos2d::Size designResolutionSize = cocos2d::Size(960, 640);

  然后HelloWorldScene.cpp中init()函数源码如下:

bool HelloWorld::init()
{
	if (!Scene::init())
	{
		return false;
	}
	auto rootNode = CSLoader::getInstance()->createNode("MainScene.csb");

	this->addChild(rootNode);

	return true;
}

  运行程序,结果如下:

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  该过程中生成以下文件夹:

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  紧接着,我们需要改进场景,从而我们重新进入CocosStudioV3.10中,往场景中增添一个按钮。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  点击按钮组件,右侧我们更改一下特性部分。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  重新发布项目【ctrl+p】。然后将生成csb文件导入Cocos2d-xV3.17.2中相同的路径下(由于文件名相同,我们直接覆盖文件即可)。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  然后我们重新编译代码,结果如下:

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

解决问题

  还记得我们第一次编译代码,生成的Debug.win32文件夹吗?它就是关键。我们点击进入其中的Resources文件夹中,发现里面同样存在一个csb文件,而且还是我们上一次的csb文件。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

  我们尝试将我们新版本的csb文件覆盖该文件夹,重新编译代码。

关于CocosStudioV3.10的场景导入Cocos2d-xV3.17.2场景未发生变化的解决方案

小结

  当我们第一次编译代码之后(我们是在debug模式下编译代码的,因此release模式下原理相同),生成的Debug.win32文件夹里就是我们在debug模式下生成的exe文件,我们在重新编译也是重新生成exe文件,而其中存在Resources文件夹就是exe文件的索引资源文件!因为我们只有更改该文件内部的csb文件才能真正达到目的。

上一篇:UniGUI的SQLite数据库(04)


下一篇:Cocos2D手机游戏开发之优化篇