`
wgcode
  • 浏览: 599583 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Unity3d 去掉exe版本的边框

 
阅读更多
[csharp] view plaincopy
 
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using System.Runtime.InteropServices;  
  4. using System;  
  5.   
  6. public class Test : MonoBehaviour  
  7. {   
  8.     /// <summary>  
  9.     /// 窗口宽度  
  10.     /// </summary>  
  11.     public int winWidth;  
  12.     /// <summary>  
  13.     /// 窗口高度  
  14.     /// </summary>  
  15.     public int winHeight;  
  16.     /// <summary>  
  17.     /// 窗口左上角x  
  18.     /// </summary>  
  19.     public int winPosX;  
  20.     /// <summary>  
  21.     /// 窗口左上角y  
  22.     /// </summary>  
  23.     public int winPosY;  
  24.   
  25.     [DllImport("user32.dll")]  
  26.     static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);  
  27.     [DllImport("user32.dll")]  
  28.     static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);  
  29.     [DllImport("user32.dll")]  
  30.     static extern IntPtr GetForegroundWindow();  
  31.   
  32.     const uint SWP_SHOWWINDOW = 0x0040;  
  33.     const int GWL_STYLE = -16;  
  34.     const int WS_BORDER = 1;  
  35.     const int WS_POPUP = 0x800000;  
  36.   
  37.     // Use this for initialization  
  38.     void Start()  
  39.     {  
  40.         winWidth = 610;  
  41.         winHeight = 350;  
  42.         //显示器支持的所有分辨率  
  43.         int i = Screen.resolutions.Length;  
  44.   
  45.         int resWidth = Screen.resolutions[i - 1].width;  
  46.         int resHeight = Screen.resolutions[i - 1].height;  
  47.   
  48.         winPosX = resWidth / 2 - winWidth / 2;  
  49.         winPosY = resHeight / 2 - winHeight / 2;  
  50.   
  51.         SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_POPUP);  
  52.         bool result = SetWindowPos(GetForegroundWindow(), 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW);  
  53.   
  54.     }  
  55. }  

原文地址点击这里

 

测试发现GUI坐标偏差,修改如下

 

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using System.Runtime.InteropServices;  
  4. using System;  
  5.   
  6. public class Test : MonoBehaviour  
  7. {  
  8.     /// <summary>  
  9.     /// 窗口宽度  
  10.     /// </summary>  
  11.     public int winWidth;  
  12.     /// <summary>  
  13.     /// 窗口高度  
  14.     /// </summary>  
  15.     public int winHeight;  
  16.     /// <summary>  
  17.     /// 窗口左上角x  
  18.     /// </summary>  
  19.     public int winPosX;  
  20.     /// <summary>  
  21.     /// 窗口左上角y  
  22.     /// </summary>  
  23.     public int winPosY;  
  24.   
  25.     [DllImport("user32.dll")]  
  26.     static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);  
  27.     [DllImport("user32.dll")]  
  28.     static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);  
  29.     [DllImport("user32.dll")]  
  30.     static extern IntPtr GetForegroundWindow();  
  31.   
  32.     [DllImport("User32.dll", EntryPoint = "GetSystemMetrics")]  
  33.     public static extern IntPtr GetSystemMetrics(int nIndex);  
  34.   
  35.     const int SM_CXSCREEN = 0x00000000;  
  36.     const int SM_CYSCREEN = 0x00000001;  
  37.   
  38.     const uint SWP_SHOWWINDOW = 0x0040;  
  39.     const int GWL_STYLE = -16;  
  40.     const int WS_BORDER = 1;  
  41.     const int WS_POPUP = 0x800000;  
  42.   
  43.     public GUIText t;  
  44.   
  45.     // Use this for initialization  
  46.     void Start()  
  47.     {  
  48.         winWidth = 610;  
  49.         winHeight = 350;  
  50.         //当前屏幕分辨率  
  51.         int resWidth = (int)GetSystemMetrics(SM_CXSCREEN);  
  52.         int resHeight = (int)GetSystemMetrics(SM_CYSCREEN);  
  53.   
  54.         winPosX = resWidth / 2 - winWidth / 2;  
  55.         winPosY = resHeight / 2 - winHeight / 2 -1;  
  56.   
  57.         SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_POPUP);  
  58.         //测试发现左下角坐标为(0,1),修改如下  
  59.         bool result = SetWindowPos(GetForegroundWindow(), 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW);  
  60.         //bool result = SetWindowPos(GetForegroundWindow(), 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW);  
  61.           
  62.     }  
  63.   
  64.     void OnGUI()  
  65.     {  
  66.         if (Input.GetMouseButtonDown(0))  
  67.         {  
  68.             t.text = "X:"+Input.mousePosition.x + " Y:" + Input.mousePosition.y;  
  69.         }  
  70.     }  
  71. }  

 

分享到:
评论

相关推荐

    Unity导exe 去掉程序边框

    ### Unity导出EXE去掉程序边框的知识点详解 #### 一、背景介绍 在使用Unity进行游戏开发或应用程序开发时,我们经常会遇到需要将项目打包成可执行文件(.exe)的情况。对于Windows平台来说,导出为.exe文件是最常见...

    2023新Unity打包exe,透明,穿透最新解决方案

    Unity打包exe去边框,置顶,透明,透明穿透解决方案,19后版本Edit——ProjectSettings——Player——ResolutionandPresentation——UseDXGIFlipModelSwapchainforD3D11选项设为false. 脚本随便挂,摄像机的Clear Flags...

    unity3d outline shader 边框 着色器

    unity3d outline shader 边框 着色器

    Unity3D实现描边框效果

    Unity3D实现描边框效果 Unity3D实现描边框效果是 Unity3D 游戏引擎中的一种常见技术,它可以将游戏对象的边界框显示出来,从而帮助开发者更好地理解游戏对象的空间关系。本文将详细介绍如何使用 Unity3D 实现描...

    Unity3d特效 插件 UIEffect

    Unity3d特效 插件 UIEffect unity3d 亲测可用

    Unity去除边框并置顶程序

    首先,"Unity去除边框并置顶程序"指的是在Unity中创建的应用程序能够以全屏无边框模式运行,同时具备窗口置顶或置底的能力。在Unity中,我们通常通过编写C#脚本来实现这一功能,具体涉及到的知识点包括: 1. **全屏...

    unity3d 游戏物体 轮廓

    Unity3D中物体的轮廓显示,此处分为薄边和厚边两种。无入侵式实现。

    Unity3D 模型的几种线框 shader

    Unity3D 模型的几种线框 shader。 模型的几种线框shader。 模型的几种线框shader,需要线框化模型的时候使用,比如选中模型线框化,只能看到模型线,看不到三角面 Unity3d Shader

    unity3d 素材包(粒子特效的)

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于创建2D和3D的互动体验,包括游戏、模拟器以及可视化应用。在这个素材包中,包含了各种粒子特效,这些特效是Unity3D游戏和应用中增添视觉魅力的重要元素。 1. 粒子...

    Unity3d Modern UI Pack 5.34 最新版

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作2D和3D游戏、互动体验以及虚拟现实应用。"Unity3d Modern UI Pack 5.34 最新版" 是一个专为Unity3D设计的现代用户界面(UI)资源包,它提供了最新的UI元素和...

    UNITY3D 照片墙

    Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于游戏、虚拟现实(VR)、增强现实(AR)以及互动媒体等领域。在本项目“UNITY3D 照片墙”中,我们将探讨如何利用Unity3D创建一个动态的照片展示系统,实现照片墙的...

    unity 制作圆角图片添加边框的实用Demo

    圆角图片边框Shader(Unity Package) 这个Unity Shader包提供了一种简单而有效的方法来为图片添加圆角和边框效果。通过使用这个Shader,你可以轻松地为任何2D图像创建平滑的圆角效果,并在需要时添加自定义颜色和...

    Unity3d窗体透明

    这是已经设置好的Unity文件,只需要把脚本 (TransparentWindow) 放入摄像机 (Main Camera) 中加入材质球点击导出 (Build) 运行一下就行了

    Unity3D 界面插件 NGUI基础带图详解

    Unity3D是一款强大的游戏开发引擎,而NGUI(Next-Generation User Interface)是Unity3D中的一款界面插件,用于创建复杂且高效的2D用户界面。这篇带图详解的教程旨在帮助初学者掌握NGUI的基础知识,从创建界面到添加...

    Unity3D描边效果(轮廓边框).pdf

    在Unity3D游戏开发中,实现物体的描边效果,也称为轮廓边框效果,是一种增强视觉表现力的常见技术。这种效果可以让游戏对象的边界更加突出,增加立体感和艺术风格。通过自定义Shader,我们可以轻松地为3D模型添加...

    Unity3D Gl方式划线

    Unity3D GL 方式划线 Unity3D 中,GL 方式划线是一种常用的绘制线条的方法,特别是在游戏视图中。下面将详细介绍 Unity3D GL 方式划线的实现原理和实现代码。 GL 方式划线的原理 在 Unity3D 中,GL 方式划线使用...

    Unity3D鼠标点击物体高亮显示

    基于Highlighting System插件的鼠标选中物体时,使物体高亮显示。在这个插件的基础上,改动部分没必要的功能,使物体可以高亮显示。直接调用该脚本里的方法就可实现物体高亮显示。

    unity3d System.Drawing

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于创建2D和3D的互动内容,包括游戏、模拟器以及可视化应用。在Unity中,我们通常使用C#作为主要的编程语言,而`System.Drawing`是.NET框架的一个部分,主要用于处理...

    Unity教学课件: 第03章 Unity3D图形用户界面基础.ppt

    Unity3D是一款强大的游戏开发引擎,广泛应用于游戏开发、虚拟现实和增强现实项目。在创建交互式游戏体验时,图形用户界面(GUI)是至关重要的组成部分。本教学课件主要讲解了Unity3D中的GUI系统,特别是关于Button...

    winform内嵌unity控件安装UnityWebPlayer.exe

    在Windows Forms(Winform)应用开发中,有时候我们需要将Unity的3D交互内容集成到桌面应用中,以提供丰富的多媒体体验或游戏功能。本教程将详细介绍如何在Winform应用程序中内嵌UnityWebPlayer控件,并安装必要的...

Global site tag (gtag.js) - Google Analytics