首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之设置自动旋转屏幕默认旋转方向
2014
06-30

Unity3D研究院之设置自动旋转屏幕默认旋转方向

如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向。

Unity3D研究院之设置自动旋转屏幕默认旋转方向 - 雨松MOMO程序研究院 - 1

 

策划的需求是游戏采用横屏,但是要求支持两个方向自动旋转,如下图所示,我的设置是这样的。

Default Orientation* Auto Roation 表示游戏支持自动旋转屏幕,但是前提是手机没有锁定屏幕旋转功能。

Landscape Right 和Landscape Left 表示手机屏幕只支持横屏两个方向的自动旋转。

Unity3D研究院之设置自动旋转屏幕默认旋转方向 - 雨松MOMO程序研究院 - 2

这里问题就来了,既然设置了两个方向的自动旋转,那么必然会有一个默认的方向。然而Unity默认的方向就是Landscape Left  就是屏幕的正方向在手机Home的左边。大部分IOS游戏都是这个方向,但是在Android上可能就有点问题了,因为Android屏幕的左下角有个返回的按钮,假如你的游戏是横屏,又假如你的游戏操作区域在右下角,那么玩家玩的时候很有可能点到这个返回按钮,那么用户体验就降低了。。

所以策划想让Android版默认正方向让屏幕在Home的右边,但是还必须支持横屏的自动旋转。。可是Unity的面板里根本没有设置带自动旋转,并且设置默认方向的参数。。。我想到在代码里面给它赋值,于是有了下面的代码。似乎问题解决的不完美,因为Unity开机有个启动画面,然而启动画面是在Awake之前执行的,所以虽然在Awake设置了屏幕方向,可是启动画面的方向确还是读取ProjectSetting里的。

所以,我直接在Setting里面就设置默认的正方向屏幕在Home按键的右边。

Unity3D研究院之设置自动旋转屏幕默认旋转方向 - 雨松MOMO程序研究院 - 3

在Awake或者Start方法里面,在设置成支持横屏旋转,问题就完美解决了。

 

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之设置自动旋转屏幕默认旋转方向》有 16 条评论

  1. 单机一 说:

    安卓的设置应该高于unit y吧 在如果最后使用安卓打包 是不是可以

  2. 治愈糖 说:

    确定是受手机影响的吗?我在PlayerSetting里设置了横屏旋转,但是手机上不论是否开屏幕旋转游戏中都可以旋转。不知道是不是新版本的问题,测了两个手机都是这样。

  3. helloWorld 说:

    游戏是竖屏的,有一个场景要做横屏的,设置了Screen.orientation,unity导出的apk可以调用接口使其转成横屏,但是转成了横屏之后,UI就乱掉了,这是怎么回事啊?转成横屏之后,Screen的宽高没有变化吗

  4. 汪楹涛 说:

    雨哥!我打包IOS的需求是和你一样的,要求支持横屏旋转!打包iPad的时候没有问题!打包到iphone5手机上的时候问题就来了。横屏的时候把手机横过来画面只是竖屏全屏的样子到画面的左边。屏幕右边一半是黑的。左边的画面的样子还是竖屏的时候的样子,显示不全,只显示下面一半!我打包iPad的时候它横屏显示就正常……

  5. 毛毛 说:

    或者你看下我的cs脚本,是不是错误了,我贴出来using UnityEngine;using System.Collections;public class t1 : MonoBehaviour {// Use this for initializationvoid Awake(){//设置屏幕正方向在Home键右边Screen.orientation = ScreenOrientation.LandscapeRight;}void Start () {//设置屏幕自动旋转, 并置支持的方向Screen.orientation = ScreenOrientation.AutoRotation;Screen.autorotateToLandscapeLeft = true;Screen.autorotateToLandscapeRight = true;Screen.autorotateToPortrait = false;Screen.autorotateToPortraitUpsideDown = false;}// Update is called once per framevoid Update () {AndroidJavaClass jc = new AndroidJavaClass (“com.unity3d.player.UnityPlayer”);AndroidJavaObject jo = jc.GetStatic (“currentActivity”);if (GUI.Button(new Rect(10, 10, 300, 100),”test”)) {jo.Call (“Max”);}}void OnGUI(){AndroidJavaClass jc = new AndroidJavaClass (“com.unity3d.player.UnityPlayer”);AndroidJavaObject jo = jc.GetStatic (“currentActivity”);if (GUI.Button(new Rect(10, 10, 300, 100),”test”)) {jo.Call (“Max”);}}}

  6. 毛毛 说:

    帮我看下吧,很着急。。谢谢了

  7. 毛毛 说:

    就是按照Auto Rotation 的设置,是旋转屏幕,退出界面。。。按照你上面说的设置,是根本启动不了apk。机型是小米2s

  8. 毛毛 说:

    屏幕一旋转,界面就自动退出了,我的界面很简单,就是在OnGuI()中有一个回调Activity的Button事件,请问这个退出是什么问题?

  9. 吴俊 说:

    这个代码的脚本自己定义的吗?挂在哪里的呀~雨哥

  10. long 说:

    小米手机的返回键就在右下角

  11. 不同的安卓机返回键位置还不一样的,有的在左下角,也有的在右下角。

留下一个回复

你的email不会被公开。