在一些展示场景中我们会遇到有多个画面需要展示在多个屏幕中的时候,此时很有可能运行我们的项目的设备上还运行着其他展示程序。如果仅仅是多屏展示,那么很有可能在我们的程序打开时抢占了原本正在运行的程序的屏幕。所以我们需要程序能在多屏展示中由我们自己去选择哪些屏幕显示哪些内容,例如三个屏幕,有两个屏幕是展示我们自己的程序,另外一个展示其他程序。这种情况下很有可能是122、112或者121,所以通过修改配置文件手动控制多屏程序使用的屏幕就显得很方便了。
一、硬件准备
以三台显示器为例,将电脑连接好三台显示器并依次编号。文章来源:https://www.toymoban.com/news/detail-528950.html
多屏设置教程——如何在 Windows 中使用多台显示器 - Microsoft 支持文章来源地址https://www.toymoban.com/news/detail-528950.html
二、多屏设置
1、在场景中分别新建两个Camera和两个Canvas
2、将两个camera和canvas的Target Display分别设置为display1和display2
3、新建一个脚本并挂载到场景中,将两个camera和canvas拖入脚本
4、编写代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using System;
public class ActiveDisplay : MonoBehaviour
{
public Camera camera1;
public Camera camera2;
public Canvas canvas1;
public Canvas canvas2;
public TMP_Text display1;
public TMP_Text display2;
public static string[] configs;
private void Awake()
{
configs = System.IO.File.ReadAllLines(Application.streamingAssetsPath + "\\config.txt");
}
private void Start()
{
string[] displayConfig = configs[0].Split(',');
int[] ints= new int[displayConfig.Length];
for (int i = 0; i < ints.Length; i++)
{
ints[i] = int.Parse(displayConfig[i]);
}
camera1.targetDisplay = ints[0] - 1;
camera2.targetDisplay = ints[1] - 1;
canvas1.targetDisplay = ints[0] - 1;
canvas2.targetDisplay = ints[1] - 1;
for (int i = 0; i < ints.Length; i++)
{
Display.displays[ints[i] - 1].Activate();
Screen.SetResolution(Display.displays[ints[i] - 1].renderingWidth, Display.displays[ints[i] - 1].renderingHeight, true);
}
display1.text += "当前设备屏幕数:" + Display.displays.Length + "——屏幕1";
display2.text += "当前设备屏幕数:" + Display.displays.Length + "——屏幕2";
}
}
5、在StreamingAssets文件夹下新建一个txt文件config作为配置文件,config中输入"1,3"(注意逗号为英文)
6、在unity中运行时,Display.displays.Length永远为1。所以我们只能打包程序后才能测试配置文件指定屏幕显示的功能是否实现,最后实现效果如下:
到了这里,关于Unity指定使用某些屏幕(多屏开发)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!