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