Unity2D Sprite灰白图(Unity3D开发之十一)

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=596

昨晚看到群里问到2DSprite怎么变成灰白图,晚上看了下,修改shader是最方便的。

下面是Sprites-Gray.shader的实现,请放入自己工程:

Shader "Sprites/Gray"
{
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
    Fog { Mode Off }
    Blend One OneMinusSrcAlpha

    Pass
    {
    CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        #pragma multi_compile DUMMY 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;
            half2 texcoord  : TEXCOORD0;
        };

        fixed4 _Color;

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

            return OUT;
        }

        sampler2D _MainTex;

        fixed4 frag(v2f IN) : SV_Target
        {
            fixed4 c = tex2D(_MainTex, IN.texcoord) * IN.color;
            c.rgb *= c.a;
            float gray = dot(c.xyz, float3(0.299, 0.587, 0.114));
            c.xyz = float3(gray, gray, gray);
            return c;
        }
    ENDCG
    }
}
}

使用方法:

// Use this for initialization
void Start () {
    SpriteRenderer render = this.GetComponent<SpriteRenderer> ();
    render.material.shader = Shader.Find ("Sprites/Gray");
}
时间: 2024-10-11 02:53:04

Unity2D Sprite灰白图(Unity3D开发之十一)的相关文章

Unity3d开发(十一)编辑器DrawCall参数解析

对于Unity运行场景中,有许多可以标记场景状况的参数.这篇文章主要探讨这些参数的意义,其中如果有错误欢迎指正. Game Stats 点击游戏Tab下的Stats可以展开如下界面,可以方便我们查看游戏运行状态. FPS & Time per frame FPS是通常说的帧率.每帧用时指的是渲染一帧需要消耗的用时,这个值只包含每帧更新游戏视图的时间,不受其他在编辑器中功能的影响,例如Profiler.FPS是这个数字的倒数.值得注意的是,这个值会比我们通常说的帧率要高,因为我们是直接计算两帧之间

Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应

原地址:http://blog.csdn.net/onerain88/article/details/11713299 NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢? 先简单看一下UIRoot中的基本属性 UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度 而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏对象的

unity3d开发实战《啪啪三国》技术详解!

去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解决办法.在演讲中,王伟峰也贡献了<啪啪三国>开发过程中总结的各种经验,从优化.插件库.服务器架构.SDK等很多细节进行了讲解.值得一说的是,王伟峰现场演讲十分幽默,冷笑话段子不断爆出,让在场观众在连续的笑声中听完这个特别的技术演讲. <ignore_js_op> 以下是王伟峰现场演讲实录

vuforia 结合 unity3d 开发 AR 的 androidAPP 总结

原地址:https://software.intel.com/zh-cn/blogs/2014/07/09/vuforia-unity3d-ar-androidapp/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=%20others-vuforia 整个开发过程的流程是这样的: 1.在unity3D中生成3D人像: 2.在vuforia官网注册,上传识别图像: 3.下载图像unity

添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)

添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/44099095 Unity5个人版会添加Unity Logo作为启动画面,咱们既然没花钱,打个广告也应该.但Unity Logo结束后可以再添加一个自己的启动画面. 下面是添加一个简单的FadeIn->FadeOut过渡场景

Unity3D开发安卓应用如何设置横屏显示和竖屏显示

说起 Unity3D 开发安卓应用设置屏幕方向,大家肯定都知道在发布的时候可以设置,也就是在下图所示的位置设置,分别表示:正向竖屏显示.倒向竖屏显示.右横屏显示.左横屏显示.跟随手机自动旋转.图一是设置屏幕显示的正方向,图二是设置允许显示的方向. 而且网上基本上也都是介绍的这种办法.这种方法有个弊端,就是设置了横屏或者竖屏后,那么应用在运行过程中,就是永远是横屏或者竖屏显示,无法更改. 博主我这次在开发项目中,拿到的需求是有些场景下横屏显示,有些场景下竖屏显示,这就太尴尬了,用上面的方法根本行不

Unity3D开发Windows Store应用程序 注意事项

原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方说明, 在此和各位开发者分享,避免在移植过程中走弯路!     Platform status 平台现状   Currently if you want to build a Windows Store apps player, you have to do it on Windows 8, thi

浅析:Unity3D开发的游戏如何降低包体大小

众所周知,通过Unity3D开发的手游包体普遍偏大,动则几百M的安装包,而包体大则会导致手游推广的成本增大,也会影响到用户转化率.除去其他因素,用户在选择下载时,会着重关注游戏包体大小,游戏包体体积过大,下载时间长,会让用户取消下载,同时也会考虑到流量的问题. 因此Unity官方也介绍了几种降低包体大小的方法: 1.替换jpg,使用psd,减少重复资源 2.剔除不必要的资源 3.打包时查看log纪录,由此判断需要减少的文件类型 4.优化,压缩图片,减少图片大小 5.优化,压缩网格和动画,减少文件

DontDestroyOnLoad(Unity3D开发之五)

Unity中我们从A场景切换到B场景的时候,A场景所有对象都会销毁,但有时候我不需要销毁某些东西. 比如一个简单的游戏的背景音乐,我不需要多次重复创建,多个场景播放这一个就行了.这个时候就需要用到DontDestroyOnLoad. using UnityEngine; using System.Collections; public class MusicManager : MonoBehaviour { string volumeSetting; void Awake () { volume