美文网首页
2020-02-27关于unity切换电脑之后分辨率改变的解决办

2020-02-27关于unity切换电脑之后分辨率改变的解决办

作者: Nmao | 来源:发表于2020-02-27 15:02 被阅读0次

    unity打包的程序会在注册表记录你打包程序之后的默认设置;

    当Unity3d 打包Windows Standalone 不显示分辨率选择框时,画质相关系统设定存储在注册表里的如下位置

    HKEY_CURRENT_USER\Software\ [CompanyName] \ [ProductName]
    CompanyName 是打包里的公司名

    ProductName 是打包里的产品名

    没有此Key的话右键新建加上就好了

    Key(注册表里对应的选项<键>) Type(注册表里对应的值的类型) Value(注册表里对应的值<键的值>)


    image.png

    Screenmanager Is Fullscreen mode_h3981298716 DWORD 0 非全屏 | 1 全屏
    Screenmanager Resolution Height_h2627697771 DWORD 具体Height 如 1080
    Screenmanager Resolution Width_h182942802 DWORD 具体Width 如 1920
    UnitySelectMonitor_h17969598 DWORD 屏幕ID 1 | 2 | 3
    UnityGraphicsQuality_h1669003810 DWORD 画质设定 Fast 0~5 Fantasic

    DWORD:在windows的注册表中,二进制的值是没有长度限制的,可以是任意字节长。但是在注册表编辑中,二进制会以十六进制的方式显示出来。DWORD值就是一个32位(双字节长)长度的数值,所以在注册表中系统以十六进制的方式显示DWORD值,64位系统当中还多一个DWORD(64位)的值。在系统中二进制和DWORD值的图标是一样的,不过二进制值是两位两位的显示,DWORD值的前面则标有标志性的0x,表示十六进制。所以后面的值显示可能不是普通数字,但是懂程序应该都能看懂。

    那么问题就来了,如果你打包了很多次的unity的包,而且包名相同的话就会出现分辨率错乱的问题,导致这个的原因就是相同包名的unity程序在注册表中只能注册一个项,所以不管你打包多少相同包名的unity程序他在对应的注册表中都是一个设置。

    解决办法:

    一:使用不同的unity报名打包。

    二:第一个办法最简单直接,但是一般情况不能适用,因为基本公司项目包名都是统一的所以解决办法:

    1.找到注册表中对应的应用程序的包的设置→删除→再打包→解决。(这个方法是非常蠢的办法)

    2.通过程序来删除:
    具体代码参照我的另一片文章:https://mp.csdn.net/postedit/82932774

    首先在你应用程序最开始的地方判断你所对应的包名是否存在,如果存在则删除。

    相关文章

      网友评论

          本文标题:2020-02-27关于unity切换电脑之后分辨率改变的解决办

          本文链接:https://www.haomeiwen.com/subject/eeathhtx.html