在Unity中如何使两个精灵的重叠区域透明?

2024-03-30

在Unity中如何使两个精灵的重叠区域透明?你能写一个关于它的着色器吗?经过一些研究,我了解到我应该使用模板缓冲区,但我不知道如何使用。这对我来说至关重要。我必须在 6 天内完成这个学校项目。 请帮忙..=(

示例图片:


就这样,请记住这是我第一次使用模板,所以我可能做了一些不太理想的事情。但它可以按照您的要求与精灵一起使用。

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Sprites/Stencil"
{
    Properties
    {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)
        [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
    }

    SubShader
    {
        Tags
        { 
            "Queue"="Transparent" 
            "IgnoreProjector"="True" 
            "RenderType"="Transparent" 
            "PreviewType"="Plane"
            "CanUseSpriteAtlas"="True"
        }

        Cull Off
        Lighting Off
        ZWrite Off
        Blend One OneMinusSrcAlpha



        Pass
        {
            Stencil {
                Ref 1
                Comp Greater
                Pass replace
                Fail Zero
            }

        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            struct appdata {
                float4 vertex : POSITION;
            };
            struct v2f {
                float4 pos : SV_POSITION;
            };
            v2f vert(appdata v) {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                return o;
            }
            half4 frag(v2f i) : SV_Target {
                return half4(0,0,0,0);
            }
        ENDCG
        }

        Pass
        {
            Stencil {
                Ref 1
                Comp equal
                Pass keep 
            }

        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile _ PIXELSNAP_ON
            #include "UnityCG.cginc"

            struct appdata_t
            {
                float4 vertex   : POSITION;
                float4 color    : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f
            {
                float4 vertex   : SV_POSITION;
                fixed4 color    : COLOR;
                float2 texcoord  : TEXCOORD0;
            };

            fixed4 _Color;

            v2f vert(appdata_t IN)
            {
                v2f OUT;
                OUT.vertex = UnityObjectToClipPos(IN.vertex);
                OUT.texcoord = IN.texcoord;
                OUT.color = IN.color * _Color;
                #ifdef PIXELSNAP_ON
                OUT.vertex = UnityPixelSnap (OUT.vertex);
                #endif

                return OUT;
            }

            sampler2D _MainTex;
            sampler2D _AlphaTex;
            float _AlphaSplitEnabled;

            fixed4 SampleSpriteTexture (float2 uv)
            {
                fixed4 color = tex2D (_MainTex, uv);

#if UNITY_TEXTURE_ALPHASPLIT_ALLOWED
                if (_AlphaSplitEnabled)
                    color.a = tex2D (_AlphaTex, uv).r;
#endif //UNITY_TEXTURE_ALPHASPLIT_ALLOWED

                return color;
            }

            fixed4 frag(v2f IN) : SV_Target
            {
                fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
                c.rgb *= c.a;
                return c;
            }
        ENDCG
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Unity中如何使两个精灵的重叠区域透明? 的相关文章

  • Unity fps 旋转相机

    在我的游戏中 我有一个摄像头 我希望将 FPS 之类的旋转附加到该摄像头上 因此 如果我将光标向左移动 我希望凸轮向左旋转 如果我向上移动光标 那么凸轮应该向上看 等等 我目前已经部分工作 我可以左看 右看 上看 下看 当我向下看然后左右移
  • 从通用平面获取轴对齐坐标

    标题可能是错误的 因为我不知道足够的数学知识来实际用一个小句子描述我的问题 我有一个 3D 矢量闭环 我将其称为 3D 多边形 我需要对其执行仅 2D 操作 这将返回一个 不同的 2D 点集 我需要将这些新的 2D 点转换回 3D 我目前的
  • 无法在 Android studio 和 Unity 中加载 libmain.so 作为库

    我的毕业项目遇到问题 我将 Unity 作为库添加到 Android Studio 中 它在我的手机上运行良好 但是当我在其他 Android 手机上尝试时 我遇到了一些奇怪的错误 无法加载libmain so 我搜索了很多 但没有找到答案
  • 如何使着色器淡入某种颜色?

    这是我当前使用的着色器 它通过缓慢降低不透明度来淡化对象 我想褪成紫色 如何才能做到这一点 着色器 frag uniform sampler2D texture uniform float opacity void main vec4 pi
  • 在 Unity 中双向旋转门

    我在 Unity 中创建了一扇打开和关闭的门 我可以通过打电话打开那扇门Interact 现在我想创建一扇始终远离玩家打开的门 就像酒吧的门一样 如果玩家在房间前面 门就会旋转到房间 如果玩家在房间里 门就会旋转出去 目前我创建了一个布尔值
  • unity3d - 加速度计灵敏度

    我正在 Unity3D 4 3 中测试加速度计代码 我想做的就是在倾斜 ipad 的同时简单地改变物体角度 以像真实生活一样伪造视角 一切工作正常 除了加速计有点太敏感 即使我把它放在桌子上 我也可以看到游戏对象在闪烁 如何让它不那么敏感
  • Unity HTML5 错误:找不到编码 1252 数据

    我使用的是 Mac 在 Google Chrome 中执行我的小应用程序时 出现 不支持代码页 1252 的 pb 我正在使用Unity 2017 年 6 月测试版为了整合几何健身房IFClib 的编码为 NET 4 6 现在在最后一个 U
  • Total Blank Unity / Microsoft Store Build 未通过 WACK 测试

    我一直在努力为我的游戏取得成功统一 2018 2 1f1 and 视觉工作室 2017 15 8 0 尝试为 Windows 商店成功构建 打包 WACK 失败后所有 每个不同的配置 我尝试了完全空白默认Unity UWP平台应用程序 生成
  • 将响应缓冲区转换为 JSON

    在 AWS 中 我使用 https 模块通过 Lambda 发出 get 请求 我能够返回数据 但当我调用时它是缓冲区格式的callback null obj https get options res gt res on data d g
  • Unity3d 协程在 while 循环后停止

    我有一个加载关卡的单例 LevelManager 等待来自新加载关卡的脚本将 GameObject 分配给 LevelManager 然后对其进行处理 我有以下代码 some GameObject calls the loadLevel c
  • 无法获取 GED 日志缓冲区,错误(0)

    我的 Android 项目有一个大问题 那就是error Failed to get GED Log Buf err 0 我真的不知道该怎么办以及如何解决它 有人可以帮我吗 非常感谢 Find Advanced logging在你手机的De
  • 我无法在 Unity Hub 中激活许可证

    我重新安装了视窗 10 我从官方网站下载了 Unity Hub 运行 unity hub 我看到错误 您没有有效的许可证 错误上有 2 个按钮 管理许可证 和 关闭 我单击 管理许可证 进入 Unity 中心设置中的 许可证管理 页面 单击
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 我在统一复制门时遇到问题

    我正在尝试统一复制我的门 但是 当我尝试这样做时 只有原来的门正在执行打开和关闭等动画 我有一个 UI 按钮 它使用 OnClick 函数来操作门 当我输入触发器时它会弹出 这是带有OnClick功能的按钮UI https i stack
  • 使用 VSCode 作为编辑器时 Unity 打开多个工作区

    我按照 VSCode 中给出的教程将 VSCode 与 Unity 2017 3 0f3 集成Docs https code visualstudio com docs other unity 我面临一个问题 每当我从 Unity 项目资源
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出
  • LibGDX - 着色器适用于桌面但不适用于 Android

    我编写了一个简单的程序 可以在 3D 环境中渲染球体 并根据球体周围的四个光源为其着色 当我在桌面上运行该程序时 它工作得很好 但在 Android 设备上 球体只是纯色的 下面是一些图片来说明我正在谈论的内容 gt Desktop gt
  • 在速度和距离不一致和/或有噪声的向量之间平滑地进行调整

    我正在可视化一级方程式赛车中提供的 GPS 数据 并尝试以动画方式显示它们在路径上的位置 Formula 1 API 提供矢量坐标和时间戳 但时间戳各不相同 它们的更新时间大约在 100 到 400 毫秒之间 timestamp x y z
  • 如何在 Three.js 场景中包含 OVRManager?

    我创建了几个 Three js Javascript 演示应用程序 正在我的新 Oculus Go 中进行试验 我正在尝试让 Go 控制器在我的应用程序中执行某些操作 根据 Oculus 开发人员中心的说法 最好的办法是将 OVRManag
  • 如何使用 BufferedReader 对象从 Java 中的一行读取多个整数值?

    我正在使用 BufferedReader 类读取 Java 程序中的输入 我想读取用户的输入 该用户可以在带空格的单行中输入多个整数数据 我想读取整数数组中的所有这些数据 输入格式 用户首先输入他 她想要输入的数字数量 然后在下一行中使用多

随机推荐

  • 如何使用 wix 将多个元素添加到 XML 配置文件中?

    我正在尝试使用 Wix 编辑 XML 文件 我正在使用与 Wix 3 7 捆绑在一起的 WixUtilExtension xml 文件是在 Visual Studio 2010 中为 C 应用程序创建的设置文件 在此文件中 我使用一个用于在
  • matplotlib 仅显示一组 10 个图形中的一个,就像幻灯片一样

    I have a set of 10 graphs based on X Y pairs In this example only 3 Displaying one graph is easy same to all graphs in t
  • 如何将字节数组转换为图像文件?

    我在我的 MVC Web 应用程序中浏览并上传了 png jpg 文件 我已将此文件作为 byte 存储在我的数据库中 现在我想读取 byte 并将其转换为原始文件 我怎样才能做到这一点 创建一个内存流 http msdn microsof
  • C 标准库和 C POSIX 库的区别

    我对 C standard lib 和 C POSIX lib 有点困惑 因为我发现 C POSIX lib 中定义的许多头文件也是 C standard lib 的一部分 所以 我假设 C standard lib 是由ANSI C组织定
  • iOS 应用程序仅在未调试时崩溃

    我正在使用 testflight 来测试我的应用程序 并且只有当应用程序是为临时构建并通过测试飞行分发时才会发生崩溃 相关崩溃报告详细信息如下 Date Time 2012 06 11 09 00 34 638 0800 OS Versio
  • PowerShell:如何设置文化?

    我尝试过了Set Culture CultureInfo vi VN但Powershell并没有改变我设定的文化 我通过打开Powershell ISE进行测试 看到我设置的文化已成功更改 如何使用 Powershell 更改我设定的文化
  • C# .net 相当于 HTTP_RAW_POST_DATA?

    想要在 C 中模仿 php 代码 我想捕获从以下 Flash Actionscript 发布的原始图像数据 function onSaveJPG e Event void var myEncoder JPGEncoder new JPGEn
  • PyMongo 不会迭代集合

    我在 Python PyMongo 中有奇怪的行为 dbh self connection test first dbh test 1 second dbh test 2 first collection records first fin
  • 如何将 C++ 程序连接到 WCF 服务?

    在我工作的地方 有一些用 C 编写的软件 还有一些用 C 编写的软件 最重要的 不久前 我们认为通过 Web 服务发送堆栈跟踪和异常信息来跟踪软件中任何可能的问题是一个好主意 因此 我使用了 WCF 服务 它获取信息并将其存储在数据库中并自
  • WCF 是否支持点对点实现?

    我正在尝试在 LAN 内实现点对点消息传递和文件共享实用程序 那么 WCF 支持 p2p 吗 有人尝试过通过 WCF 进行文件共享吗 是的 它确实 请参见如何在对等网络中设计状态共享 http msdn microsoft com en u
  • 在 Tensorflow 中检索 LSTM 序列的最后一个值

    我有不同长度的序列 想在 Tensorflow 中使用 LSTM 进行分类 对于分类 我只需要每个序列最后一个时间步长的 LSTM 输出 max length 10 n dims 2 layer units 5 input tf place
  • 如何实现widget在垂直(高度)和水平(宽度)方向上的扩展

    下面的代码列出了一个图表 我需要在其中实现图表在垂直 高度 和水平 宽度 方向上的扩展 建议的方法 例如https docs flutter io flutter widgets Row class html https docs flut
  • PostgreSQL 只支持 STORED 生成列吗? [复制]

    这个问题在这里已经有答案了 前言 我给出了一些 PHP 示例 只是为了指出我的开发环境 问题不在于 PHP 而纯粹在于 PostgreSQL PostgreSQL有关生成列的文档 https www postgresql org docs
  • 直接从 iPhone 向在线服务器执行 SQL 查询

    我是一个新手 倾向于做一些简单的iOS应用程序 该任务是制作一个应用程序 为一个人进行注册 然后将该数据上传到在线服务器 详细一点 我想insert delete update数据直接传输到在线服务器 有人能告诉我我需要做什么 工具 库 吗
  • 无法在具有 CORS 的 AWS API Gateway 上使用自定义请求标头

    我创建并部署了具有以下结构的 AWS API Gateway 资源 其中包括自定义 HTTP 请求标头 X header dev stage echo resource POST method Method Request Headers
  • 为 Cocoa 寻找类似电子表格的控件

    我正在寻找 Cocoa 的网格视图 表格视图 电子表格类型控件 但似乎找不到任何处于任何合理状态的东西 我尝试过使用 NSTableView 但它并不是真正的单个单元格控件 NSCollectionView 似乎也不对 有任何想法吗 而马特
  • 可以使用 Azure Powershell 创建应用服务计划吗?

    正如标题所说 我需要以编程方式创建应用程序服务计划 场景 将创建 N 个 azure 网站 动态地 也使用 azure powershell 如果有一天高级应用服务计划无法处理网站数量 即使通过 CPU 使用情况自动缩放 则必须创建另一个服
  • 如何使用 PHP 在点击时自动填充其他表单字段

    我现在有一个简单的表格
  • 如何使用 fetch 和 FormData 发送二进制数据 (blob)?

    以下代码按预期工作 在 Google Chrome 上打开页面 https wiki epfl ch 然后在开发者控制台上执行此代码 注意 页面 https wiki epfl ch test php 不存在 因此无法加载 但这不是问题 r
  • 在Unity中如何使两个精灵的重叠区域透明?

    在Unity中如何使两个精灵的重叠区域透明 你能写一个关于它的着色器吗 经过一些研究 我了解到我应该使用模板缓冲区 但我不知道如何使用 这对我来说至关重要 我必须在 6 天内完成这个学校项目 请帮忙 示例图片 就这样 请记住这是我第一次使用