unity3d 在Unity 3D中检测Windows Night Light模式

xzv2uavs  于 2023-04-07  发布在  Windows
关注(0)|答案(1)|浏览(128)

我一直在寻找一种方法来检测Windows Night Light模式是否在Unity 3D中使用C#打开。
我发现了一个类似问题Get status of night light mode in Windows 10的帖子,但我无法使其工作,当我试图在Unity中使用它时,代码给了我以下错误:
CS0103:当前上下文中不存在名称“Registry”
我尝试用System.Environment.UserName替换Registry。这产生了另一个错误:
CS1061:“string”不包含“OpenSubKey”的定义,并且找不到接受类型为“string”的第一个参数的可访问扩展方法“OpenSubKey”(是否缺少using指令或程序集引用?)
如何解决这个问题?
以下是在Unity中无法工作的代码示例:

private static bool IsNightLightEnabled()
{
    const string BlueLightReductionStateKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\CloudStore\Store\DefaultAccount\Current\default$windows.data.bluelightreduction.bluelightreductionstate\windows.data.bluelightreduction.bluelightreductionstate";
    using (var key = Environment.UserName.OpenSubKey(BlueLightReductionStateKey))
    {
//this doesn't matter
    }
}

private static bool IsNightLightEnabled()
{
    const string BlueLightReductionStateKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\CloudStore\Store\DefaultAccount\Current\default$windows.data.bluelightreduction.bluelightreductionstate\windows.data.bluelightreduction.bluelightreductionstate";
    using (var key = Registry.OpenSubKey(BlueLightReductionStateKey))
    {
//this doesn't matter
    }
}

要获取我遇到的错误,请将它们粘贴到C#脚本中,并放入Unity项目资产中。

cidc1ykv

cidc1ykv1#

看起来我不需要对.NET框架库项目做任何特殊的事情。找到答案很难,但我设法追踪到了我的统一偏好。
要解决这个问题,您需要做的就是打开一个Unity项目,转到编辑〉项目设置〉播放器。接下来选择PC的设置,然后转到其他设置〉配置〉API级别兼容性并选择.NET 4.x
这将允许您使用Unity项目中的大多数.NET 4.5方法函数,包括Registry及其所有方法和字段。

相关问题