代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class ScreenRotate : MonoBehaviour {// Use this for initializationvoid Start () {Screen.orientation = ScreenOrientation.LandscapeLeft;}// Update is called once per framevoid Update () {if(Input.deviceOrientation == DeviceOrientation.LandscapeLeft){if(Screen.orientation != ScreenOrientation.LandscapeLeft){Screen.orientation = ScreenOrientation.LandscapeLeft;}Debug.Log("### 111: " + Screen.orientation);}else if(Input.deviceOrientation == DeviceOrientation.LandscapeRight){if (Screen.orientation != ScreenOrientation.LandscapeRight){Screen.orientation = ScreenOrientation.LandscapeRight;}Debug.Log("### 222: " + Screen.orientation);}}
}

注意几点:

1.Input.deviceOrientation

文档描述:Device physical orientation as reported by OS. (Read Only)

解释:用于实时获取手机当前所处的方向

2.Screen.orientation

解释:用于设置当前屏幕内容的方向

特殊说明当我们设置该变量的值为:ScreenOrientation.AutoRotation的时候,他会自动根据手机所处的方向,自动设置真实的值,取值范围根据以下变量设置

autorotateToLandscapeLeft Allow auto-rotation to landscape left?
autorotateToLandscapeRight Allow auto-rotation to landscape right?
autorotateToPortrait Allow auto-rotation to portrait?
autorotateToPortraitUpsideDown Allow auto-rotation to portrait, upside down?

这4个变量共同决定了AutoRotation的取值范围,如果4个变量中有为false的,那么将会从取值范围中移除。

3.Screen.orientation = ScreenOrientation.LandscapeLeft;

这样赋值后,屏幕将永远相对于在home键的左侧,无论我们怎么旋转手机,都不会让屏幕进行旋转了。如果我们要旋转屏幕内容,那么就得像Update函数中那样做,进行手动检测控制

4.测试中发现给Screen.orientation赋值后,如果立刻获取Screen.orientation的值,会发现并没有改变为赋值之后的,而要等待手机旋转的过渡动画完成后,再获取Screen.orientation的值,才是我们赋予的。这条把我坑惨了,因为项目里面我会在同一帧使用Screen.orientation的值做一些逻辑,发现不对头,所以后来打印了该值,才发现这个问题,解决办法就是我用变量缓存了我们要赋予的值,再做逻辑就行了。

Unity 手机的旋转控制相关推荐

  1. Unity手机游戏发热发烫优化指南与技巧

    Unity手机游戏发热发烫优化指南与技巧 很多小伙伴做完游戏后,发布到Android,运行,游戏很流畅,也不卡顿,但是跑一会游戏,手机就发热,发烫.客户提出需求,能否让它不发烫? 本文从以下3方面来分 ...

  2. Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一.读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的.全面的信息,帮助我们快速学习新技能和知识.同时技术书籍有助于保持你的竞争力,因为它们提供了最新 ...

  3. unity 手机 模糊效果_GUI背景模糊效果优化

    欢迎关注"数天技术"!" 作者介绍:数字天空项目组客户端工程师 – 文立" 导语 在游戏界面显示时,通常会对背景进行模糊,使显示界面更加清楚.此外,在处理景深( ...

  4. 透视宝移动端对Unity手机游戏引擎监控实现

    Unity是近年来非常流行的游戏引擎(engine),在当前手机游戏市场中所占份额极大,著名手机游戏Temple Run(神庙逃亡).纪念碑谷.战舰少女R.天天飞车等都是基于Unity引擎开发的.通过 ...

  5. 小白零基础搞unity手机跑酷游戏-01-GettingStarted

    小白零基础搞unity2D手机跑酷游戏-01-Getting Started 策划 键位 内容 准备工作 这是我第一次在CSDN上写博客,是想锻炼一下自己,也是对自己的一种激励吧,毕竟立了一个很大的f ...

  6. unity 手机游戏优化(场景篇)

    场景基本上占游戏性能一大部分(内存和渲染)所以优化按优先级,先优化场景 场景加载(资源复用率) 加载都是基于Assetbundle情况下 1.动态加载,场景里面所有东西都保存预设,把场景数据保存配置表 ...

  7. Unity 手机触屏事件

    Unity 触屏操作   当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的.Unity的Inpu ...

  8. Unity手机震动,Unity -> android 震动

    说明 Unity 有自己的 接口 Handheld.Vibrate() 来实现手机的震动,但是不能控制震动时长. 现在来介绍Unity 调用 Android 系统的震动接口实现手机震动效果.基本思路: ...

  9. Unity手机震动,Unity -> ios 震动

    说明 Unity 有自己的 接口 Handheld.Vibrate() 来实现手机的震动,这里来介绍下Unity调用ios原生震动. 下面有两种方法震动的实现,用来自己测试.建议使用方法一. 方法一 ...

最新文章

  1. 耕耘数据,融合发展——2018年度数据科学研究院RONG教授座谈会成功举办
  2. Docker容器日志集中收集(client-server模式)
  3. 第三周课程总结实验报告
  4. 正则表达式提取括号里面的值
  5. vue时间过滤器filter
  6. BZOJ3343 教主的魔法 二分法+分块
  7. 400是什么错误_Spring Boot的REST API错误处理
  8. java 二进制输入_把从键盘输入的一个二进制数赋给变量A 然后如何转换为其他进制...
  9. MongoDB学习(一)Centos6.5下安装mongoDB
  10. 解密Zynga:专注 流水线 数据控
  11. 编写LLVM Pass模块知识点梳理
  12. 爱测未来移动-iTest特色功能介绍
  13. DY(抖音)、KS(快手)、西瓜、知乎等批量去水印小程序版本可视化版本
  14. 前端UI交互 - 中后台系统 - 界面布局原则
  15. 最新CAD机械二维三维图块集
  16. python pymysql cursors_怎么Pythonpymysql.cursors从mysql存储过程获取INOUT返回结果
  17. 字符串转为 double 类型
  18. turtle实现一团乱麻和甜甜圈
  19. 记一次数据丢失(电脑硬盘closed to down)的经历
  20. mysql 同步失败_mysql 同步失败解决方法 (错误:1236)

热门文章

  1. 常见Windows硬件故障
  2. HTML控制表格边线显示。
  3. 在测试中发现错误,不要着急去改,静下心来,想一想错误的关联性( 错误展开确认 )。
  4. 基于ajax请求异常捕获
  5. 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
  6. el-upload进度条无效,on-progress无效问题解决方案
  7. 【转】implicit declaration of function 这种警告问题的原因及解决方法
  8. 编写一个程序,从10亿个数字的数组中找出100个最大的数字
  9. 如何确定类型是否使用C#反射实现接口
  10. 如何使用bcrypt在PHP中对密码进行哈希处理?