问题描述
因此,当我尝试构建统一项目时,选项菜单未正确构建。我尝试了两个统一版本,系统的硬重启以及更改设置。没有任何问题可以解决。该游戏在统一编辑器中运行正常,但在构建时无法正常运行。
编辑器下拉菜单(应该如何):
Build下拉列表(不应如此):
如果您查看构建图片,它将复制所有可能由生成它的脚本引起的下拉条目:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
public class OptionsMenu : MonoBehavIoUr
{
public Audiomixer audiomixer;
public Dropdown resolutionDropdown;
Resolution[] resolutions;
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();
另一个问题是质量下降,在编辑器中它可以正常工作,但是当我构建它时,它并不会改变游戏质量(保持较低水平)。
另一个问题仅在一个构建中发生。问题是鼠标移动相机的灵敏度非常低,当我再次构建它时,此问题已解决。
解决方法
对于重复项,这是一个已知的问题:该问题是独立存在的,它似乎以60Hz和48Hz的刷新率复制每个分辨率。
例如:640x480 @ 48Hz; 640x480 @ 60Hz;等等
一个解决方案可能是Linq语句,仅选择60Hz频率(或48Hz):
var resolutionsIEnumerable = Screen.resolutions.Where(resolution => resolution.refreshRate == 60);
resolutions = resolutionsIEnumerable.toArray();
Linq Where()
返回IEnumerable,因此,您必须转换为数组Resolution[]
(使用toArray()
)
要更改分辨率,您必须使用
Screen.SetResolution(640,480,true,60);
您应使用选定的分辨率更改下拉列表中的640
和480
。