0

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

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

构建下拉菜单(不应该这样): 这里

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

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

另一个问题是质量下拉菜单,在编辑器中它工作正常,但是当我构建它时它不会改变游戏质量(它保持在低水平)。

另一个问题只发生在一个版本上。问题是移动相机的鼠标灵敏度非常低,当我再次构建它时,问题得到了解决。

4

1 回答 1

1

对于重复,这是一个已知问题:问题是独立存在的,它似乎以 60Hz 和 48Hz 的刷新率复制每个分辨率。

例如:640x480@48Hz;640x480@60Hz;ETC

一个解决方案可能是一个 Linq 语句,只选择 60Hz 频率(或 48Hz):

var resolutionsIEnumerable = Screen.resolutions.Where(resolution => resolution.refreshRate == 60);
resolutions = resolutionsIEnumerable.toArray();

LinqWhere()返回 IEnumerable 因此,您必须转换为数组Resolution[](使用toArray()

为了改变分辨率,你必须使用

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

您应该使用选定的分辨率更改640和下拉更改。480

于 2020-08-28T11:56:44.510 回答