【思路】
控制游戏分辨率,最合适的UI组件是下拉列表。所以游戏中肯定要添加一个DropDown UI组件来让用户实现设置。
要让设置生效,就需要让用户对UI组件进行操作后,触发脚本,脚本的功能就是将用户在下拉列表中所选的分辨率反映到游戏设置中。
选组件和关联脚本之前的几个帖子都说过了,不是什么难点。这里存在的两个问题是,如何知道你的电脑配置目前有效的分辨率设置,以及如何将选定的分辨率应用到游戏中。这个帖子先说如何获得合适的分辨率以及设置合理的UI动作,包括点击下拉列表后展示选项,选中后在UI界面更新到选中选项。
【脚本】
要用到DropDown,所以需要引入UI组件包。
using UnityEngine.UI
接着变量部分要引入动态的有效分辨率数据列表,创一个公共变量
也需要一个DropDown对象来存放UI实例
public Dropdown resolutionDropdown;
Resolution[] resolutions;
利用start方法,在启动游戏时,就先将适合的分辨率读到变量中
再把变量内容赋给UI下拉框中
由于从系统得到的resolutions和DropDown中需要赋值的类型不同,中途还做了一个转换,将resolutions转换成string list类型后赋给UI
void Start()
{
resolutions = Screen.resolutions;
resolutionDropdown.ClearOptions();
List<string> options = new List<string>();
int currentResolutionIndex = 0;
for (int i = 0; i < resolutions.Length; i++)
{
string option = resolutions[i].width + "x" + resolutions[i].height;
options.Add(option);
if (resolutions[i].width == Screen.currentResolution.width && resolutions[i].height == Screen.currentResolution.height)
{
currentResolutionIndex = i;
}
}
resolutionDropdown.AddOptions(options);
resolutionDropdown.value = currentResolutionIndex;
resolutionDropdown.RefreshShownValue();
}
注意,系统的resolution对象作为一个整体无法互相比较,所以需要拆开比较width和height。
设定完必后需要refresh一下Dropdown选择项目才会生效。
上面是游戏Start时获取并展示Resolutions的方法,下一个帖子我会介绍如何将选中的分辨率应用到游戏里。