22.Unity重要组件和API-Screen
22.1 知识点
静态属性
常用
currentResolution静态变量 当前屏幕分辨率,返回Resolution表示显示分辨率类
// 当前屏幕分辨率(只读)。
Resolution resolution = Screen.currentResolution;
Screen.currentResolution的width变量和height变量 当前显示器的分辨率宽高
// Resolution显示分辨率类中的变量width:分辨率宽度(以像素为单位)。
// Resolution显示分辨率类中的变量height:分辨率高度(以像素为单位)。
// 打印的是当前显示器的分辨率,不是Game窗口的。
print("当前显示器的分辨率的宽" + resolution.width + "高" + resolution.height);
width变量和height变量 Game窗口当前宽高
// width静态变量:屏幕窗口的当前宽度(以像素为单位)(只读)。
// height静态变量:屏幕窗口的当前高度(以像素为单位)(只读)。
// 这得到的是当前Game窗口的宽高,不是显示器分辨率的宽高。
// 一般写代码要用Game窗口宽高做计算时就用它们。
print("Game窗口的当前宽度" + Screen.width);
print("Game窗口的当前高度" + Screen.height);
sleepTimeout静态变量 屏幕休眠模式:
// 节能设置,允许屏幕在无用户交互一段时间后变暗。
Screen.sleepTimeout = SleepTimeout.NeverSleep;
Screen.sleepTimeout = SleepTimeout.SystemSetting;
不常用
fullScreen静态变量 运行时是否全屏模式
// 游戏是否以全屏模式运行?
Screen.fullScreen = true;
fullScreenMode静态变量 窗口模式
// 将该属性设置为FullScreenMode中的某个值,以更改应用程序的显示模式。
// 独占全屏FullScreenMode.ExclusiveFullScreen
// 全屏窗口FullScreenMode.FullScreenWindow
// 最大化窗口FullScreenMode.MaximizedWindow
// 窗口模式FullScreenMode.Windowed
Screen.fullScreenMode = FullScreenMode.Windowed;
移动设备旋转屏幕相关
// autorotateToLandscapeLeft静态变量 - 允许自动旋转为左横向,Home键在左。
// 是否允许自动旋转到左侧横向模式?
Screen.autorotateToLandscapeLeft = true;
// autorotateToLandscapeRight静态变量 - 允许自动旋转为右横向,Home键在右。
// 是否允许自动旋转到右侧横向模式?
Screen.autorotateToLandscapeRight = true;
// autorotateToPortrait静态变量 - 允许自动旋转到纵向,Home键在下。
// 是否允许自动旋转到纵向模式?
Screen.autorotateToPortrait = true;
// autorotateToPortraitUpsideDown静态变量 - 允许自动旋转到纵向倒着看,Home键在上。
// 是否允许自动旋转到颠倒纵向模式?
Screen.autorotateToPortraitUpsideDown = true;
orientation静态变量 指定屏幕显示方向
// 指定屏幕的逻辑方向。
Screen.orientation = ScreenOrientation.Landscape;
静态方法
SetResolution静态方法 设置分辨率(一般移动设备不使用)
// 切换屏幕分辨率。
Screen.SetResolution(1920, 1080, false);
22.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson22_屏幕相关Screen : MonoBehaviour
{
void Start()
{
#region 知识点一 静态属性
#region 常用
//currentResolution静态变量 当前屏幕分辨率 返回Resolution表示显示分辨率类
//当前屏幕分辨率(只读)。
Resolution resolution = Screen.currentResolution;
//当前显示器的分辨率宽高
//Resolution显示分辨率类中的变量width 分辨率宽度(以像素为单位)。
//Resolution显示分辨率类中的变量height 分辨率高度(以像素为单位)。
//打印的是当前显示器的分辨率 不是Game窗口的
print("当前显示器的分辨率的" + "宽" + resolution.width + "高" + resolution.height);
//Game窗口当前宽高
//width静态变量 屏幕窗口的当前宽度(以像素为单位)(只读)。
//height静态变量 屏幕窗口的当前高度(以像素为单位)(只读)。
//这得到的 是当前 Game窗口的 宽高 不是显示器分辨率的宽高
//一般写代码 要用Game窗口宽高 做计算时 就用他们
print("Game窗口的当前宽度" + Screen.width);
print("Game窗口的当前高度" + Screen.height);
//sleepTimeout静态变量 屏幕休眠模式
//节能设置,允许屏幕在无用户交互一段时间后变暗。
Screen.sleepTimeout = SleepTimeout.NeverSleep;
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#endregion
#region 不常用
//fullScreen静态变量 运行时是否全屏模式
//游戏是否以全屏模式运行?
Screen.fullScreen = true;
//fullScreenMode静态变量 窗口模式
//将该属性设置为 FullScreenMode 中的某个值,以更改应用程序的显示模式。
//独占全屏FullScreenMode.ExclusiveFullScreen
//全屏窗口FullScreenMode.FullScreenWindow
//最大化窗口FullScreenMode.MaximizedWindow
//窗口模式FullScreenMode.Windowed
Screen.fullScreenMode = FullScreenMode.Windowed;
//移动设备旋转屏幕相关
//autorotateToLandscapeLeft静态变量 允许自动旋转为左横向 Home键在左
//是否允许自动旋转到左侧横向模式?
Screen.autorotateToLandscapeLeft = true;
//autorotateToLandscapeRight静态变量 允许自动旋转为右横向 Home键在右
//是否允许自动旋转到右侧横向模式?
Screen.autorotateToLandscapeRight = true;
//autorotateToPortrait静态变量 允许自动旋转到纵向 Home键在下
//是否允许自动旋转到纵向模式?
Screen.autorotateToPortrait = true;
//autorotateToPortraitUpsideDown静态变量 允许自动旋转到纵向倒着看 Home键在上
//是否允许自动旋转到颠倒纵向模式?
Screen.autorotateToPortraitUpsideDown = true;
//orientation静态变量 指定屏幕显示方向
//指定屏幕的逻辑方向。
Screen.orientation = ScreenOrientation.Landscape;
#endregion
#endregion
#region 知识点二 静态方法
//SetResolution静态方法 设置分辨率 一般移动设备不使用
//切换屏幕分辨率。
Screen.SetResolution(1920, 1080, false);
#endregion
}
}
22.3 练习题
在输入习题的基础上,鼠标滚轮控制控制炮管的抬起放下
声明炮管尾部Transform和炮管移动速度 炮管尾部Transform在Inspector拖拽赋值
//class内
public Transform gunTail;
public float gunTailRotateSpeed = 20;
使用鼠标滚轮滚动Api Input.mouseScrollDelta.y 调整炮管
//Update内
gunTail.Rotate(Vector3.right * gunTailRotateSpeed * Time.deltaTime * Input.mouseScrollDelta.y);
在上一题的基础上,加入长按鼠标右键移动鼠标可以让摄像机围着坦克旋转,改变观察坦克的视角
声明摄像机看向的对象Transform和摄像机旋转的速度 摄像机看向的对象Transform在Inspector拖拽赋值
//class内
//摄像机看向的对象
public Transform target;
//摄像机旋转的速度
public float roundSpeed = 50;
脚本挂载到摄像机上 让摄像机一直看向目标 检测鼠标长按后检测鼠标水平移动旋转摄像机
//Update内
//每一帧实时让摄像机看向目标对象
this.transform.LookAt(target);
//使用 绕着某一个点 的某一个轴 旋转的知识点 进行处理
//鼠标 右键长按 知识点
if (Input.GetMouseButton(1))
{
this.transform.RotateAround(target.position, //围绕的点
Vector3.up, //哪个轴
roundSpeed * Time.deltaTime * Input.GetAxis("Mouse X"));//速度 Mouse X -1到1
}
22.4 练习题代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson22_练习题 : MonoBehaviour
{
#region 练习题一
//声明炮管尾部Transform和炮管移动速度 炮管尾部Transform在Inspector拖拽赋值
//class内
public Transform gunTail;
public float gunTailRotateSpeed = 20;
#endregion
#region 练习题二
//声明摄像机看向的对象Transform和摄像机旋转的速度 摄像机看向的对象Transform在Inspector拖拽赋值
//class内
//摄像机看向的对象
public Transform target;
//摄像机旋转的速度
public float roundSpeed = 50;
#endregion
void Update()
{
#region 练习题一
//1.在输入习题的基础上,鼠标滚轮控制控制炮管的抬起放下
//使用鼠标滚轮滚动Api Input.mouseScrollDelta.y 调整炮管
//Update内
gunTail.Rotate(Vector3.right * gunTailRotateSpeed * Time.deltaTime * Input.mouseScrollDelta.y);
#endregion
#region 练习题二
//2.在上一题的基础上,加入长按鼠标右键移动鼠标
// 可以让摄像机围着坦克旋转,改变观察坦克的视角
//脚本挂载到摄像机上
//让摄像机一直看向目标 检测鼠标长按后检测鼠标水平移动旋转摄像机
//Update内
//每一帧实时让摄像机看向目标对象
this.transform.LookAt(target);
//使用 绕着某一个点 的某一个轴 旋转的知识点 进行处理
//鼠标 右键长按 知识点
if (Input.GetMouseButton(1))
{
this.transform.RotateAround(target.position, //围绕的点
Vector3.up, //哪个轴
roundSpeed * Time.deltaTime * Input.GetAxis("Mouse X"));//速度 Mouse X -1到1
}
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com