Unity build 无法正确构建游戏

Unity build not building game correctly

所以当我尝试构建我的统一项目时,选项菜单没有正确构建。我尝试了两个统一版本,硬重启我的系统,并更改设置。什么都没有纠正这个问题。游戏在 unity 编辑器中运行良好,但在构建时无法正常运行。

编辑器下拉菜单(应该如何):

构建下拉列表(不应该是这样):

如果您查看构建图片,它会复制所有下拉条目,这可能是由生成它的脚本引起的:

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() returns IEnumerable 所以,你必须转换成数组 Resolution[] (with toArray())

要更改分辨率,您必须使用

Screen.SetResolution(640, 480, true, 60);

您应该根据所选分辨率更改下拉列表中的 640480