Unity指定使用某些屏幕(多屏开发)

在一些展示场景中我们会遇到有多个画面需要展示在多个屏幕中的时候,此时很有可能运行我们的项目的设备上还运行着其他展示程序。如果仅仅是多屏展示,那么很有可能在我们的程序打开时抢占了原本正在运行的程序的屏幕。所以我们需要程序能在多屏展示中由我们自己去选择哪些屏幕显示哪些内容,例如三个屏幕,有两个屏幕是展示我们自己的程序,另外一个展示其他程序。这种情况下很有可能是122、112或者121,所以通过修改配置文件手动控制多屏程序使用的屏幕就显得很方便了。

一、硬件准备

以三台显示器为例,将电脑连接好三台显示器并依次编号。

多屏设置教程——如何在 Windows 中使用多台显示器 - Microsoft 支持

二、多屏设置

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。所以我们只能打包程序后才能测试配置文件指定屏幕显示的功能是否实现,最后实现效果如下:

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值