22.Screen屏幕

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

×

喜欢就点赞,疼爱就打赏