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,所以函数如上所示,你可以根据自己的需求和实际情况来定。
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,所以函数如上所示,你可以根据自己的需求和实际情况来定。
相关文章推荐
- 如何重装TCP/IP协议
- Kinect结合Unity3D引擎开发体感游戏(一)
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- 使用Windows原生命令一键清空剪贴板
- windows用windeployqt发布qt quick application程序
- 利用开源软件打造自己的全功能远程工具
- Windows 8虚拟机不能全屏的解决方法
- 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述
- 虚拟化基础架构Windows 2008篇之5-安装Windows部署服务
- 虚拟化基础架构Windows 2008篇之7-添加其他操作系统的安装镜像
- 虚拟化基础架构Windows 2008篇之9-配置Windows部署服务