Unity3D之扩展屏功能

unity是由UnityTechnologies开发的一款游戏开发引擎,它的特点就是易用、跨平台、开发效率高,所以也成了目前为止手机游戏和虚拟现实领域中最受欢迎、市场占有率最多的开发工具。

unity在做一些windows的应用程序时,需要在主屏上显示程序1,在扩展屏上显示程序2,两个程序可以通过通信的方式来互动,也可以充当无互动的显示屏。本文主要介绍unity如何在一台机器上使程序自动运行在扩展屏上。

首先介绍需要用到的函数原型

SetWindowPos(IntPtr hWnd,IntPtr hWndInsertAfter,int x,int y,int cx,intcy,uintuFlags)

函数功能:设置一个窗口显示的位置,大小,以及在空间中Z轴的位置情况。

hWnd 要设置的窗口,本文就是指要显示在扩展屏上的窗口

hWndInsetAfter 是窗口在空间Z周上的位置,显示在其他窗口的前或者后(当值为-1,窗口显示在所有窗口最前面)

x 窗口在整个大屏上距离左边的X轴位置起始点

窗口在整个大屏上距离左边的Y轴位置起始点

cx 扩展屏宽度,也就是窗口的width

cy 扩展屏高度,也就是窗口的height

GetActiveWindow()

函数功能:得到当前程序的线程的活动窗口

具体操作过程:

1.启动unity,新建脚本Windowshow.cs,并挂在摄像机上

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.InteropServices;

public class WindowShow : MonoBehaviour 
{
	[HideInInspector]
	//导入设置窗口函数
	[DllImport("user32.dll")]
	static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
	//导入当前活动窗口
	[DllImport("user32.dll")]
	static extern IntPtr GetActiveWindow();
	//显示窗口
	const uint SWP_SHOWWINDOW = 0x0040;
	//扩展屏在整个大屏的X起始位置
	int x = 1920;
	//扩展屏在整个大屏的Y起始位置
	int y = 0;
	//扩展屏宽度
	int width = 1366;
	//扩展屏高度
	int height = 768;

	void Start () 
	{
		SetWindowPos(GetActiveWindow(), -1, x, y, width, height, SWP_SHOWWINDOW);
	}
}


2.PlayerSetting里面把 Visible In Backgroud  打钩


3.打包运行,效果可见


说明:由于我做测试的扩展屏是1366*768,主屏是1920*1080,所以函数如上所示,你可以根据自己的需求和实际情况来定。


  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值