Unity构建无法正确构建游戏

问题描述

因此,当我尝试构建统一项目时,选项菜单未正确构建。我尝试了两个统一版本,系统的硬重启以及更改设置。没有任何问题可以解决。该游戏在统一编辑器中运行正常,但在构建时无法正常运行。

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

Here

Build下拉列表(不应如此):

Here

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

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);

您应使用选定的分辨率更改下拉列表中的640480