You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity项目打包版本屏幕分辨率重复问题求助

Unity打包后分辨率重复的解决方案

问题核心在于Screen.resolutions返回的Resolution结构体,其默认的相等比较逻辑(Distinct()默认依赖的)没有完全匹配分辨率的所有关键属性(宽度、高度、刷新率),导致打包后系统返回的相似分辨率无法被正确去重。

解决步骤:

  1. 自定义一个Resolution的相等比较器,明确指定判断两个分辨率相等的条件:
public class ResolutionComparer : IEqualityComparer<Resolution>
{
    public bool Equals(Resolution x, Resolution y)
    {
        return x.width == y.width && x.height == y.height && x.refreshRate == y.refreshRate;
    }

    public int GetHashCode(Resolution obj)
    {
        return HashCode.Combine(obj.width, obj.height, obj.refreshRate);
    }
}
  1. 在获取分辨率时,使用这个自定义比较器调用Distinct():
_resolutions = Screen.resolutions
    .Distinct(new ResolutionComparer())
    .OrderBy(x => x.width)
    .ThenBy(x => x.height)
    .ThenBy(x => x.refreshRate)
    .ToArray();

为什么编辑器里正常?

编辑器环境下,Unity对系统返回的分辨率数据做了额外处理,使得默认的相等逻辑能正确识别重复项;但打包后,直接调用系统API返回的分辨率数据,其结构体实例的默认比较逻辑无法覆盖所有关键参数,导致Distinct()失效。

内容的提问来源于stack exchange,提问作者Hatemsla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:09:38