您的位置:首页 > 移动开发 > Unity3D

Unity3D之扩展屏功能

2016-07-14 15:18 417 查看
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 窗口在整个大屏上距离左边的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,所以函数如上所示,你可以根据自己的需求和实际情况来定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d windows 扩展屏