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);
您应该根据所选分辨率更改下拉列表中的 640
和 480
。
所以当我尝试构建我的统一项目时,选项菜单没有正确构建。我尝试了两个统一版本,硬重启我的系统,并更改设置。什么都没有纠正这个问题。游戏在 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);
您应该根据所选分辨率更改下拉列表中的 640
和 480
。