Unity3D在最新版本中具有本地多显示器支持。 API文档表明,这与将每个显示器连接到相机视图相关联。 是否有可能将显示映射到场景?因此,具有两个监视器的用户可以在其中一个监视器上显示两个不同的场景? 如果可能的话,会怎么做呢?Unity3D:在多个显示器上显示不同的场景
回答
在多台显示器上显示不同的场景?
否,你不能。
在多台显示器上显示来自同一场景的不同摄像机?
是的!与Display类。
事实是,你不能同时运行两个不同的场景。你不能。
但是,您可以使用Application.LoadLevelAdditive
(作废)或SceneManager.LoadScene("sceneName",LoadSceneMode.Additive);
扩展当前场景,这与您要求的内容无关。
你可以做什么:
位置多台摄像机在不同的地方在的,相同的场景然后渲染每个摄像机不同的显示。
最大支持的显示器是。
您可以使用Display.displays.Length
检查连接的显示器数量。
Display.displays[0]
是主/主显示器。
Display.displays[1]
下一页显示
Display.displays[2]
下一页显示
Display.displays[3]
另一个下一页显示
呼叫激活功能,以激活显示。
Display.displays[1].Activate();
激活显示器时,还可以提供宽度,高度和刷新率。 (仅适用于Windows)
int width, height, refreshRate;
width = Screen.width;
height = Screen.height;
refreshRate = 120;
Display.displays[1].Activate(width, height, refreshRate);
之前您激活显示器,确保显示的索引设置为一个摄像头。
MyOtherCamera.targetDisplay = 1;
//使MyOtherCamera显示在第二个显示器上。您现在可以调用激活功能。
假设我们有4个摄像头和4个显示屏,并且我们希望在每个显示屏上显示每个摄像头。
Camera[] myCams = new Camera[4];
void Start()
{
//Get Main Camera
myCams[0] = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
//Find All other Cameras
myCams[1] = GameObject.Find("Camera2").GetComponent<Camera>();
myCams[2] = GameObject.Find("Camera3").GetComponent<Camera>();
myCams[3] = GameObject.Find("Camera4").GetComponent<Camera>();
//Call function when new display is connected
Display.onDisplaysUpdated += OnDisplaysUpdated;
//Map each Camera to a Display
mapCameraToDisplay();
}
void mapCameraToDisplay()
{
//Loop over Connected Displays
for (int i = 0; i < Display.displays.Length; i++)
{
myCams[i].targetDisplay = i; //Set the Display in which to render the camera to
Display.displays[i].Activate(); //Enable the display
}
}
void OnDisplaysUpdated()
{
Debug.Log("New Display Connected. Show Display Option Menu....");
}
是否可以使用连接到相机对象的相机组件中的目标显示激活显示? – Hamid
我真的不明白你的问题,但你必须将显示号码分配给相机的目标('Camera.targetDisplay'),然后调用'Display.display [index] .Activate()'使相机的图像显示在监控。我在答案中讨论了所有这些。 – Programmer
相同的解决方案here:
多显示器
多显示器可以让你在同一时间最多可显示多达8个不同的监控8个不同的摄像机视图您的应用程序。您可以将其用于PC游戏,街机游戏机和简单的公共显示装置。
多显示器只能在独立模式下运行,并且在Windows,Mac OS X和Linux上受支持。在您的项目
预览多显示器要查看不同显示器显示:
设置每个摄像头显示某个监视器,使用它的督察。您可以通过目标显示选项在1到8个显示器之间进行分配(参见图1)。
图1:相机督察与目标显示选项
图1:相机督察与目标显示选项 然后,您可以预览在游戏中查看每个显示,使用下拉显示菜单该视图的左上角(见图2)。
图2:在游戏显示的左上角显示预览
图2:在游戏显示的左上角显示预览 激活多显示器
默认显示是一个监视器,因此当您运行应用程序时,您需要使用Display.Activate通过脚本显式激活任何其他显示。您需要明确激活每个附加显示,并且一旦激活,您就不能停用它们。
激活附加显示的最佳时间是在创建新场景时。这样做的一个好方法是将脚本组件添加到默认Camera。确保在启动期间只调用一次Display.Activate。您可能会发现创建一个小的初始场景来测试它会很有帮助。
例脚本
using UnityEngine;
using System.Collections;
public class DisplayScript : MonoBehaviour
{
// Use this for initialization
void Start()
{
Debug.Log("displays connected: " + Display.displays.Length);
// Display.displays[0] is the primary, default display and is always ON.
// Check if additional displays are available and activate each.
if (Display.displays.Length > 1)
Display.displays[1].Activate();
if (Display.displays.Length > 2)
Display.displays[2].Activate();
...
}
// Update is called once per frame
void Update()
{
}
}
API支持
以下UnityEngine.Display API函数的支持:
public void Activate()
这激活所述电流监控器的宽度和高度的特定显示。在开始新场景时必须进行一次该调用。它可以从连接到相机的用户脚本或新场景中的虚拟游戏对象中调用。
public void Activate(int width, int height, int refreshRate)
仅限Windows:激活自定义显示器的宽度和高度的特定显示。
除了其他答案,如果您确实想在另一台显示器上显示不同场景,则可以确保该场景中的所有内容都位于特定图层上。然后在该场景中的相机上设置cullingmask仅渲染该图层,并在主摄像机上排除该图层。 然后就像上面提到的那样加载场景。
这基本上是Unity的预览器的工作原理(尽管它不是实例化隐藏的预制件的场景)。
- 1. Unity3D多显示器关闭一个显示器
- 2. 游戏场景不显示
- 3. JavaFX显示器场景背景图像
- 4. 如何在屏幕上同时显示2个场景
- 5. 用QGraphics场景显示图像场景
- 6. 隐藏和显示不同场景的导航器
- 7. SKNodes不在场景中显示
- 8. 按钮在多个显示器上显示不正确
- 9. 显示不同级别的不同场景。 AndEngine
- 10. GUI显示场景图
- 11. 如何在不同的时间隐藏/显示多个广场
- 12. TextView在不同的显示器上
- 13. 在iOS上显示背景但在Android上不显示Xamarin
- 14. 在显示器上同步
- 15. 在Chrome浏览器中显示CSS多个背景,但不显示IE或Firefox
- 16. 如何在多显示器设置中的不同显示器上同时播放不同的视频?
- 17. Swing组件在不同的显示器上显示出不同的结果
- 18. 如何使用OpenCV在不同的显示器上显示不同的窗口
- 19. 如何在显示多个场景/节点时不打开多个阶段
- 20. Sharepoint:如何在交叉发布场景中的显示模板上显示AppendOnlyHistory
- 21. react-navigation,调度动作改变场景 - 场景不显示
- 22. 用JavaFX显示另一个场景[场景图形问题]
- 23. 克隆显示在多个显示器上
- 24. 使用XNA在多个显示器上全屏显示
- 25. 不能在操场上显示视图
- 26. Three.js:在场景中间显示对象
- 27. 如何在场景中显示文本?
- 28. 如何管理单场显示的单场显示的两种不同视图?
- 29. 显示在一个场
- 30. 不同画布上的多个场景
你想在同一时间显示这两个场景或一次只显示一个? – Programmer
与此同时。我特别感兴趣的是尝试编写Kerbal Space Program的Mod,以使用新的Unity多监视器支持,允许用户在主屏幕上显示飞行视图时,在辅助屏幕上显示mapview或IVA视图。 – silentcoder