Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在第一次尝试时选择Unity游戏打开的监视器_C#_Unity3d - Fatal编程技术网

C# 如何在第一次尝试时选择Unity游戏打开的监视器

C# 如何在第一次尝试时选择Unity游戏打开的监视器,c#,unity3d,C#,Unity3d,我想指定哪个监视器1?2.我的Unity游戏在从命令行运行其.exe时打开 如Unity Answers帖子所示,此C代码确实有效: PlayerPrefs.SetInt("UnitySelectMonitor", 1); // Select monitor 2 但是,只有关闭游戏并重新打开它,设置才会生效。该帖子也承认了这一缺陷 有没有办法在第一次尝试时在所需的显示器上打开游戏 注意:我假设解决方案需要在构建步骤中,或者在启动Unity Player的.exe的命令行arg中。因为如果解决方

我想指定哪个监视器1?2.我的Unity游戏在从命令行运行其.exe时打开

如Unity Answers帖子所示,此C代码确实有效:

PlayerPrefs.SetInt("UnitySelectMonitor", 1); // Select monitor 2
但是,只有关闭游戏并重新打开它,设置才会生效。该帖子也承认了这一缺陷

有没有办法在第一次尝试时在所需的显示器上打开游戏


注意:我假设解决方案需要在构建步骤中,或者在启动Unity Player的.exe的命令行arg中。因为如果解决方案是C代码本身,就像上面的解决方案一样,那么游戏就已经打开了,然后就太迟了。

从2019.3版开始,使用-monitor。例如:

在Unity of versions>2019.3.0b12、2020.1.0a12中,修复了一个关于同时运行同一应用程序的多个实例的相关错误。从:

要点:适配器命令行参数已替换为 2019.3版监控桌面平台的一致性;这个 行为完全一样

注意:其他屏幕命令行也会出现此问题 参数:屏幕宽度、屏幕高度和屏幕全屏 修复程序也解决了这些问题

导致此问题的原因是这些命令行参数将 设置/更新PlayerPrefs,即这些值被持久化并应用 下次启动应用程序时。那么,应用程序的第二个实例 本质上继承第一个进程的值,导致 由于与的竞争条件而忽略它自己的命令行参数 PlayerPrefs更新逻辑。但是,如果第二个进程延迟 几秒钟后,竞赛条件不会发生,命令 论点运作正常

修复程序通过在以下情况下设置覆盖值来解决争用条件: 这些参数被传入,强制运行时应用 命令行值,并忽略存储在PlayerPrefs中的值

但是,PlayerPrefs由命令参数更新,这是 这仍然是一个竞赛条件,对于哪些值没有保证 将实际上被保存。也就是说,来自的第一个实例的值 应用程序可能会保存到PlayerPrefs,而不是来自 第二个例子,正如你所料。团结不能解决这个问题 由于竞争发生在运行时外部,因此如果最终 PlayerPrefs的状态很重要,那么您必须交错启动 应用程序的每个实例


从2019.3版开始,使用-监视器。例如:

在Unity of versions>2019.3.0b12、2020.1.0a12中,修复了一个关于同时运行同一应用程序的多个实例的相关错误。从:

要点:适配器命令行参数已替换为 2019.3版监控桌面平台的一致性;这个 行为完全一样

注意:其他屏幕命令行也会出现此问题 参数:屏幕宽度、屏幕高度和屏幕全屏 修复程序也解决了这些问题

导致此问题的原因是这些命令行参数将 设置/更新PlayerPrefs,即这些值被持久化并应用 下次启动应用程序时。那么,应用程序的第二个实例 本质上继承第一个进程的值,导致 由于与的竞争条件而忽略它自己的命令行参数 PlayerPrefs更新逻辑。但是,如果第二个进程延迟 几秒钟后,竞赛条件不会发生,命令 论点运作正常

修复程序通过在以下情况下设置覆盖值来解决争用条件: 这些参数被传入,强制运行时应用 命令行值,并忽略存储在PlayerPrefs中的值

但是,PlayerPrefs由命令参数更新,这是 这仍然是一个竞赛条件,对于哪些值没有保证 将实际上被保存。也就是说,来自的第一个实例的值 应用程序可能会保存到PlayerPrefs,而不是来自 第二个例子,正如你所料。团结不能解决这个问题 由于竞争发生在运行时外部,因此如果最终 PlayerPrefs的状态很重要,那么您必须交错启动 应用程序的每个实例


谢谢你的链接!但不完全如此。对于我来说,最早的Direct3D选项是11,而该链接建议使用不迟于9,因为之后会有一个bug。我实际上收回了这一点,它似乎对我有效!谢谢你的链接!但不完全如此。对于我来说,最早的Direct3D选项是11,而该链接建议使用不迟于9,因为之后会有一个bug。我实际上收回了这一点,它似乎对我有效!
 GameExecutable.exe -screen-fullscreen 1 -monitor 2