最近买了一个Mac本,于是想将项目放到Mac上瞧瞧,我的win机器还是i3处理器,真的是慢得要死,改一行代码重新编译都要五六分钟,实在是忍受不了了,狠下心还是买了一个二手Mac,穷啊!Mac和win最大的不同就是编码格式,win使用的是GB2312,而Mac使用的是UTF-8,因为win使用GB2312,所以你就看到了我们使用cocos显示一个中文字体都要各种的转换编码,真是惆怅啊,但是如果你使用Mac开发,显示中文的时候直接使用中文字体就可以,根本就不需要转换来转换去。Mac下主要使用Xcode开发游戏,Xcode虽然用的还不是很熟练,但是感觉还是不错的,和vs比起来各有千秋吧,看你习惯甚么了,不过在Mac下开发感觉比win下开发要方便,win下的游戏只能打包Android包,但是在Mac下既可以打包Android也可以打包iOS,这就是方便的地方了。之前的飞机大战都是在win下开发的,今天我们就移植到Mac下,在Mac下跑起来我们的程序。

开篇说的很明白了,其实就是字符编码的问题,当你把项目放到Mac下打开的时候会发现我的中文注释全部变成了乱码,所以,解决了编码的问题就解决了移植的问题啦。在Mac下我们使用一行命令将所以在Classes目录下的源代码文件格式转化为UTF8的格式。在使用命令之前,将控制台的根目录切换到Classes目录下,使用命令mkdir classes创建一个文件夹classes,这个文件夹是用来保存我们转化编码格式后的文件的,然后使用命令

find *.* -exec sh -c "iconv -f GB2312 -t UTF-8 {}>classes/{}" \;

这样就将转化编码后的源代码放到了classes目录下,接下来在Xcode工程中就使用这些转化编码后的文件。

源码文件转换前 源码文件转换后

然后打开Xcode工程,将源代码和资源导入到工程中,源代码在引用某些代码路径的时候可能使用了错误的路径,需要将这些路径和真实的路径对应起来,这一点不难做到。运行我们的程序,会在加载声音的时候崩溃,因为原来加载背景音乐的时候并没有判断Mac平台,所以代码修改如下就可以了。

//获取音效和音乐的文件
char * Sound::getMusic(MUSIC_TYPE type)
{
	switch(type)
	{
	case MUSIC_TYPE_BACKGROUND:
		//获取不同平台下的文件
		return "sound/game_music.mp3";
		break;
	case MUSIC_TYPE_BIG_SPACESHIP_FLYING:
		return "sound/big_spaceship_flying.mp3";
		break;
	}
	return NULL;
}

这样的话我们就将项目成功移植到Mac平台下了,现在我们就在Mac下开发我们的游戏吧。