unity游戏画质设置功能实现

在游戏中往往会出现游戏画质设置的功能。

如图:

这个功能是怎么实现完成的呢?

一、目标:实现切换画质功能

二、了解unity支持的画质

首先要了解unity中共支持多少种画质。

在代码中也可以进行打印。

方法如下:

cs 复制代码
void Start () {
        //画质有哪些
        for (int i = 0; i < QualitySettings.names.Length; i++)
        {
           Debug.Log("画质类型有这些:"+QualitySettings.names[i].ToString());

        }

     
    }

主要的API就一个:QualitySettings。

上述代码运行结果如图:

由此可见unity有6种画质类型。(当前版本unity2020版)

------下面制作一个简易的菜单用来实现切换不同画质的功能--------

三、制作UI菜单

新建Dropdown,调整好UI的位置在左上角。

运行一下,可以看到新建的下拉菜单默认的UI是Option A,Option B,Option C

我们可以在属性了进行修改:

然后还可以在加号的地方添加新的选项:

这样在UI里

本案例里只做了四种画质。

将切换画质方法的脚本setquality挂载到物体Dropdown上。

四、画质功能切换代码

如下:

cs 复制代码
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;

public class setquality : MonoBehaviour {

    private List<string> Qualitylevels;
	// Use this for initialization
	void Start () {
        //画质有哪些
        for (int i = 0; i < QualitySettings.names.Length; i++)
        {
           Debug.Log("画质类型有这些:"+QualitySettings.names[i].ToString());

        }

     
    }
	
	

    public void Set_Quality()
    {
        int qualitynumberchanged = 5;//画质高低,代表画质质量高低,数值越大画质越好。
        if (this.GetComponentInChildren<Text>().text == "极致")
        {
             qualitynumberchanged = 5;//画质高低
            QualitySettings.SetQualityLevel(qualitynumberchanged, true);//修改画质代码
            Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
        }

        if (this.GetComponentInChildren<Text>().text == "高清")
        {
            qualitynumberchanged = 4;//画质高低
            QualitySettings.SetQualityLevel(qualitynumberchanged, true);
            Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
        }

        if (this.GetComponentInChildren<Text>().text == "标清")
        {
            qualitynumberchanged = 3;//画质高低
            QualitySettings.SetQualityLevel(qualitynumberchanged, true);
            Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
        }
        if (this.GetComponentInChildren<Text>().text == "流畅")
        {
            qualitynumberchanged = 1;//画质高低
            QualitySettings.SetQualityLevel(qualitynumberchanged, true);
            Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
        }

    }
  
}

五:代码与UI绑定

然后在Dropdown上的On Value changed中放置绑定脚本的物体。如图:

然后在右侧将脚本中的方法选中。

六、运行游戏测试

如下:

相关推荐
qq_205279053 小时前
unity 鼠标更换指定图标
unity·游戏引擎
FAREWELL000755 小时前
Unity基础学习(九)输入系统全解析:鼠标、键盘与轴控制
学习·unity·c#·游戏引擎
码观天工7 小时前
【.NET必读】RabbitMQ 4.0+重大变更!C#开发者必须掌握的6大升级要点
c#·rabbitmq·.net·mq
wgc2k7 小时前
Java游戏服务器开发流水账(5)Spring 在游戏开发中的使用简介
java·服务器·游戏
passionSnail7 小时前
《用MATLAB玩转游戏开发》推箱子游戏的MATLAB趣味实现
开发语言·游戏·matlab
绿龙术士8 小时前
构建现代化WPF应用:数据驱动开发与高级特性解析
c#·wpf
o0向阳而生0o9 小时前
43、Server.UrlEncode、HttpUtility.UrlDecode的区别?
c#·.net
敲代码的 蜡笔小新9 小时前
【行为型之策略模式】游戏开发实战——Unity灵活算法架构的核心实现策略
unity·设计模式·c#·策略模式
Kookoos10 小时前
【实战】基于 ABP vNext 构建高可用 S7 协议采集平台(西门子 PLC 通信全流程)
后端·物联网·c#·.net
钢铁男儿12 小时前
C# 方法(栈帧)
开发语言·c#