我们在开发一款游戏之前一定会考虑的一件事就是,我们的游戏是支持横屏还是竖屏,又或者是横竖屏都支持。那么如何在xcode中对项目进行设置呢?下面我就在xcode5.1.1中利用cocos2dx2.2.3,从新建项目开始,来进行游戏横竖屏的设置。

 

一、新建项目

      找到cocos2dx相应目录,利用python脚本新建项目,在MAC的终端输入如下命令(此处为我的目录位置,项目名与包名任意命名):

cd /cocos2d-x-2.2.3/tools/project-creator
python create_project.py -project 项目名 -package 包名 -language cpp

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏

      此时,项目创建成功。在cocos2d-x-2.2.3目录下,打开projects目录后,找到我们新建的项目,进入项目目录后会看到如下目录结构,由于我们是在MAC系统下开发,所以打开对应的ios目录,找到项目文件打开

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios_02

 

二、横竖屏设置

      打开项目后,在xcode左上角可以设置虚拟机(图中iPhone设备需要自行下载,上篇博客中已说明下载方法)

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios横屏游戏强制竖屏_03

      设置好虚拟机后,编译运行程序,得到如下效果

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios_04

      从运行结果中可以看到,新建的项目默认为横屏显示,将设备旋转为竖屏后,游戏画面并未自动旋转

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_05

      再将设备旋转90度,游戏画面自动变化为下图

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios横屏游戏强制竖屏_06

      那么接下来,就让我们来看看如何设置设备的方向。

      首先,点击我们的项目,选择“General”选项卡,在“Deployment Info”下找到“Device Orientation”,其后有4个选项,当前选中下面两个,也就是我们上面看到的结果,设备横屏时的两个状态。

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏_07

      若对应之前版本的xcode应该更好理解

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_08

      当我们只设置一个方向时,旋转设备后,游戏画面只会在设置的方向正常显示,设备旋转到其他方向时,游戏画面不会自行旋转。

     

      那么现在,我们将设备方向设置为上面的两个选项,及竖屏的两个方向

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏_09

      现在运行程序,可以看到如下效果,游戏画面已变为竖屏

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios横屏游戏强制竖屏_10

      将设备旋转为横屏后,效果如下,游戏画面并未旋转

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_11

      再将其旋转90度,如下图

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios横屏游戏强制竖屏_12

      此时,游戏画面没有自动旋转,与我们的设置不相符。那么现在,我们将设备方向只设置为“Upside Down”,即

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios_13

      运行程序时,我们会看到程序会抛出异常

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_14

      此时我们需要修改代码,在项目的ios目录下找到“RootViewController.mm”文件

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_15

      我们找到“supportedInterfaceOrientations”方法,看到此处返回值的结尾处,就会知道为什么会出现上面的异常

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏_16

      我们在头文件“UIApplication.h”中查看该返回值的含义(在最下面),其中的含义应该比较好理解

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏_17

      现在我们将返回值改为所有方向

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_18

      运行程序,此时设备方向和游戏画面和我们的设置一致

ios横屏游戏强制竖屏 iphone游戏横屏设置_横屏_19

      我们发现在“RootViewController.mm”中还有一个“shouldAutorotateToInterfaceOrientation”方法好像也与屏幕方向有关,但看到上面的注释,我们知道这个方法在ios6中已经不再使用了,但在ios6之前的版本还是需要设置的。

ios横屏游戏强制竖屏 iphone游戏横屏设置_竖屏_20

      其实,这个函数的返回值也比较简单,同样在“UIApplication.h”中,根据需要自行设置即可

ios横屏游戏强制竖屏 iphone游戏横屏设置_ios横屏游戏强制竖屏_21

      综上,我们在设置游戏画面方向时,需要设置3个地方

    (1) 项目“General”选项卡下的“Device Orientation”选项

    (2) 项目ios目录下“RootViewController.mm”的“supportedInterfaceOrientations”函数返回值

    (3) 同样是“RootViewController.mm”中的“shouldAutorotateToInterfaceOrientation”函数返回值

    

      至此,我们就可以根据自己项目的需要来设置游戏支持横屏或竖屏了。