• unity游戏画质设置功能实现


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

    如图:

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

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

    二、了解unity支持的画质

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

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

    方法如下:

    1. void Start () {
    2. //画质有哪些
    3. for (int i = 0; i < QualitySettings.names.Length; i++)
    4. {
    5. Debug.Log("画质类型有这些:"+QualitySettings.names[i].ToString());
    6. }
    7. }

    主要的API就一个:QualitySettings。

    上述代码运行结果如图:

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

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

    三、制作UI菜单

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

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

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

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

    这样在UI里

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

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

    四、画质功能切换代码

    如下:

    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5. public class setquality : MonoBehaviour {
    6. private List<string> Qualitylevels;
    7. // Use this for initialization
    8. void Start () {
    9. //画质有哪些
    10. for (int i = 0; i < QualitySettings.names.Length; i++)
    11. {
    12. Debug.Log("画质类型有这些:"+QualitySettings.names[i].ToString());
    13. }
    14. }
    15. public void Set_Quality()
    16. {
    17. int qualitynumberchanged = 5;//画质高低,代表画质质量高低,数值越大画质越好。
    18. if (this.GetComponentInChildren().text == "极致")
    19. {
    20. qualitynumberchanged = 5;//画质高低
    21. QualitySettings.SetQualityLevel(qualitynumberchanged, true);//修改画质代码
    22. Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
    23. }
    24. if (this.GetComponentInChildren().text == "高清")
    25. {
    26. qualitynumberchanged = 4;//画质高低
    27. QualitySettings.SetQualityLevel(qualitynumberchanged, true);
    28. Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
    29. }
    30. if (this.GetComponentInChildren().text == "标清")
    31. {
    32. qualitynumberchanged = 3;//画质高低
    33. QualitySettings.SetQualityLevel(qualitynumberchanged, true);
    34. Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
    35. }
    36. if (this.GetComponentInChildren().text == "流畅")
    37. {
    38. qualitynumberchanged = 1;//画质高低
    39. QualitySettings.SetQualityLevel(qualitynumberchanged, true);
    40. Debug.Log("当前画质:" + QualitySettings.names[qualitynumberchanged].ToString());
    41. }
    42. }
    43. }

    五:代码与UI绑定

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

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

    六、运行游戏测试

    如下:

  • 相关阅读:
    win10音量调节不起作用
    逻辑漏洞之越权漏洞
    【SA8295P 源码分析】103 - QNX DDR RAM 内存布局分析
    2022年最新java大厂面试真题剖析:如何设计一个高并发系统?
    2022_09_12__排序总结+C++入门
    【分享】20个高级Java面试题汇总(含答案)
    [Angular 基础] - routing 路由(上)
    建筑设计资质怎么办理,建筑设计乙级资质申请条件有哪些
    Typescript笔记:Number对象
    linux上gitlab备份与还原
  • 原文地址:https://blog.csdn.net/alayeshi/article/details/133991764