实现步骤:

1.设置MainCamera

2.添加C#脚本

一、设置MainCamera里的Camera组件,以下图为例子

关键点在于 :

MainCamera->Camera->Clear Flags:Solid Color

MainCamera->Camera->Background:black

二、新建C#脚本,编写代码如下(HyalineBackground.cs)

using UnityEngine;
using System;
using System.Runtime.InteropServices;
//MainCamera->Camera->Clear Flags:Solid Color
//MainCamera->Camera->Background:black
public class HyalineBackground : MonoBehaviour
{public string strProduct;//项目名称private int currentX;private int currentY;#region Win函数常量private struct MARGINS{public int cxLeftWidth;public int cxRightWidth;public int cyTopHeight;public int cyBottomHeight;}[DllImport("user32.dll")]private static extern IntPtr GetActiveWindow();[DllImport("user32.dll")]static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll")]static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);[DllImport("user32.dll")]static extern int GetWindowLong(IntPtr hWnd, int nIndex);[DllImport("user32.dll")]static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);[DllImport("user32.dll")]static extern int SetLayeredWindowAttributes(IntPtr hwnd, int crKey, int bAlpha, int dwFlags);[DllImport("Dwmapi.dll")]static extern uint DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS margins);[DllImport("user32.dll")]private static extern int SetWindowLong(IntPtr hWnd, int nIndex, uint dwNewLong);//private const int WS_POPUP = 0x800000;private const int GWL_EXSTYLE = -20;private const int GWL_STYLE = -16;private const int WS_EX_LAYERED = 0x00080000;private const int WS_BORDER = 0x00800000;private const int WS_CAPTION = 0x00C00000;private const int SWP_SHOWWINDOW = 0x0040;private const int LWA_COLORKEY = 0x00000001;private const int LWA_ALPHA = 0x00000002;private const int WS_EX_TRANSPARENT = 0x20;#endregionIntPtr hwnd;void Awake(){#if UNITY_EDITORprint("unity内运行程序");
#elsehwnd = FindWindow(null, strProduct);int intExTemp = GetWindowLong(hwnd, GWL_EXSTYLE);SetWindowLong(hwnd, GWL_EXSTYLE, intExTemp | WS_EX_TRANSPARENT | WS_EX_LAYERED);SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_BORDER & ~WS_CAPTION);currentX = 0;currentY = 0;SetWindowPos(hwnd, -1, currentX, currentY, Screen.currentResolution.width, Screen.currentResolution.height, SWP_SHOWWINDOW);var margins = new MARGINS() { cxLeftWidth = -1 };DwmExtendFrameIntoClientArea(hwnd, ref margins);
#endif}
}

在Hierarchy视图新建空物体,添加上面建立的脚本组件即可

三、注意代码设置效果无法体现在编译器模式,将代码打包查看效果

注意Player Setting->Resolution and Presentation->Standalone Player Options->Use DXGI Filp Model Swapchain for D3D1为false

此文参考过多篇博客,可以说取其精华,实验过许多次

最后,如若项目有任何问题,欢迎批评指正或讨论。

Unity制作自适应透明背景(PC端)相关推荐

  1. Unity打包后窗口在PC端不按照设置的大小显示

    Unity打包后窗口在PC端不按照设置的大小显示 发现问题 问题出现可能原因(只是怀疑) 解决方法 发现问题 将项目打包到PC端后,刚开始使用的时候窗口显示正常,但是使用过一段时间之后窗口显示出现问题 ...

  2. 网页制作 手机端与PC端兼容

    网页制作--手机端与PC端兼容 手机端与PC端使用一套代码时,随屏幕分辨率的大小变化,会产生媒体查询并实现手机端与PC端的切换 (一套代码) <meta http-equir="Cac ...

  3. Unity URP 输出透明背景

    目标 在URP渲染管线下,输出带有透明背景的切图或者视频.默认情况下背景是不带透明通道的.可通过以下方式实现透明背景输出.(基于Unity 2021.3.1f1c1版本) 操作步骤 将Camera的B ...

  4. Unity制作360°全景背景(内部可见shader)

    Unity项目中经常会出现非全封闭式的建筑场景,玩家能看到场景之外的一些内容(不可避免),就需要有一个360°无死角的全景背景来避免穿帮,而不是使用Unity自带的虚空作为背景. 制作全景背景有两种方 ...

  5. 制作FLASH透明背景

    本文详细介绍关于在网页中插入透明Flash的技巧的主题文章. 将Flash插入网页的时候,我们有时候会需要将它设为透明,有时候我们需要在Flash的背面插入一些漂亮的图片,搭配出漂亮的效果--下面我们 ...

  6. 关于从零开始学习qt制作蓝牙app和PC端的记录

    1.提前准备学习 由于本人在此之前只学习过C语言,了解到QT制作会用到C++的基础部分,所以提前学习了C++,大概花费三天 接下来学习QT 推荐B站学习 基本只需要学习基本使用 后面实践才是最重要的 ...

  7. 零基础上手unity VR开发【配置PC端项目的实时调试】

  8. [html] 制作一个页面时,需要兼容PC端和手机端,你是要分别做两个页面还是只做一个页面自适应?为什么?说说你的理由

    [html] 制作一个页面时,需要兼容PC端和手机端,你是要分别做两个页面还是只做一个页面自适应?为什么?说说你的理由 两个页面 pc端布局和交互行为跟移动端不一样, 两个页面反而更好维护 个人简介 ...

  9. 【学习】自适应PC端网页制作使用REM

    做一个PC端的网页,设计图是1920X1080的. 要在常见屏上显示正常(比例正确可) 1280X720 1366X768 1440X900 1920X1080 使用了几种办法 1.内容在一屏内显示的 ...

  10. pc端rem适配_自适应PC端网页制作使用REM

    做一个PC端的网页,设计图是1920X1080的. 要在常见屏上显示正常(比例正确可) 1280X720 1366X768 1440X900 1920X1080 使用了几种办法 1.内容在一屏内显示的 ...

最新文章

  1. NeurIPS 2020论文接收大排行!谷歌169篇第一、斯坦福第二、清华国内第一
  2. 看到这儿,你就不会再轻易相信自己的眼睛
  3. web框架flask(4)——数据库
  4. Python NumPy-快速处理数据
  5. python中异常的处理及断言,包括异常类型、异常捕获、主动跑出异常和断言
  6. C语言实现冒泡排序(bubble排序)算法(附完整源码)
  7. linux服务器查配置信息失败,查看Linux服务器的配置信息
  8. 函数遍历IOS中block的使用
  9. 进程环境之命令行参数
  10. QEMU,KVM及QEMU-KVM介绍
  11. csdn 博客代码块显示复制按钮
  12. Android可拖动对话框Dialog
  13. 基于TB67S109AFNAG的步进电机控制板分享
  14. Android UID相关知识
  15. Input输入框的失焦
  16. 虾神段子小剧场:人人都该学点数据分析(1):达五十万的电竞人才缺口?
  17. 怎么通过网络快速赚钱,无非是这4种方式!
  18. 程序员电脑组装_解密中国互联网企业创始人,程序员是如何打下半壁江山的?...
  19. 【Zookeeper】ZK 是干什么的?
  20. 大学生计算机入学考试试题,大学生统考计算机一级考试试题题库.doc

热门文章

  1. 《概率论与数理统计》(浙大第四版)第五章总结笔记(纯手写)
  2. ColorDict词典下载
  3. 黑盒(功能)测试基本方法
  4. 2021-07-20 诺瓦星云笔试复盘
  5. Github上热搜的Java开源商城项目合集,这个是真的好
  6. java sql注入 正则表达式_有效防止SQL注入的5种方法总结
  7. 数学建模层次分析法例题及答案_数学建模层次分析法题目及程序
  8. java垃圾回收机制简介
  9. jvisualvm 工具使用
  10. win10计算机权限不足是,深度技术windows10系统电脑权限不足导致无法格式化分区的方法...