Unity3D在window环境下多屏、全屏运行的解决方案

using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Diagnostics;
using UnityEngine;
using System.Xml.Serialization;


public class WindowMod : MonoBehaviour 
{    
   // [HideInInspector]
    public Rect screenPosition;


    [DllImport("user32.dll")]
    static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong); 
    
    [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;    
    const int GWL_STYLE = -16;    
    const int WS_BORDER = 1;    
    private int i = 0;   
    
    void Start()
    {
#if UNITY_STANDALONE_WIN
      SetWindowLong(GetActiveWindow(), GWL_STYLE, WS_BORDER);
        SetWindowPos(GetActiveWindow(), -1, (int)screenPosition.x, (int)screenPosition.y, 
            (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);  
#endif
    }    
    
    
    void Update()    
    {        
        i++;     
        if(i<5)    
        {    
            #if UNITY_STANDALONE_WIN
            SetWindowLong(GetActiveWindow(), GWL_STYLE, WS_BORDER);
            SetWindowPos(GetActiveWindow(), -1, (int)screenPosition.x, (int)screenPosition.y, 
                (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW); 
            #endif
        }   
    } 
}

用这个脚本,可以使Unity3D窗口全屏,没有标题栏,通过更改screenPosition的值,还可以使窗口直接在第二个屏幕上启动(x=0, y=0, width=1920, height=1080),或者窗口跨越两个屏(x=0, y=0, width=3840, height=1080)。  Windows系统会记录每个软件的窗口大小和位置,记录在注册表的\HKEY_CURRENT_USER\Software\xxx\yyy 位置,xxx是Unity3D在build设置中的Company Name,yyy是在Build设置中的Product Name。所以如果有时候窗口大小有问题,可以先备份注册表,再删除xxx项。建议每个项目的Product Name不要用默认值,否则打包出来的软件都会对应到注册表里相同的项。


在实际测试代码的时候直接点三角号运行了,结果unity的标题栏被隐藏,始终在最前,而且窗口大小改变了……而且改不回来,十分无语……

看来一定要打包后再实际进行测试。


现在只要将脚本绑定到场景物体上,并设置一下窗口大小就可以使用了


原文链接:http://www.chinaar.com/unity/1722.html



另一种方式:

在生成的执行文件目录下创建一个bat文件,写入内容: 

demo.exe -popupwindow -screen-width 3840 -screen-height 1080 

用这个bat启动程序即可。其中demo.exe替换成你的exe名称,-screen-width是两个屏幕分辨率宽度的总和,-screen-height是一个屏幕的高度(当然,一般这种情况下,两个屏幕分辨率都是一致的) 


原文链接:http://www.chinaar.com/unity/1752.html

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值