unity用shader实现物体的忽隐忽现效果

来源:互联网 发布:成都用友软件 编辑:程序博客网 时间:2024/09/21 09:24

之前在项目中写个类似的效果,但当时是用外包一个正方体,更改其纹理的alpha。但这种方法应用到不规则物体上效果就糟糕了。

这一阵看了点shader知识,下面就用shader实现一下吧。

1.新建一个shader,其内容如下:

Shader "Custom/changeAlpha" {Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_MyFloat ("My Alpha", range(0,1)) = 1.0}SubShader {Tags { "RenderType"="Transparent" "Queue" = "Transparent" }LOD 200Blend SrcAlpha OneMinusSrcAlpha  CGPROGRAM#pragma surface surf Lambertsampler2D _MainTex;float _MyFloat;struct Input {float2 uv_MainTex;};void surf (Input IN, inout SurfaceOutput o) {half4 tex = tex2D (_MainTex, IN.uv_MainTex);o.Albedo = tex.rgb;o.Alpha = _MyFloat;}ENDCG} FallBack "Diffuse"}
ok,内容就不解释了(需要解释的一定是还没接触shader的,建议从头开始学)。

2.新建一个c#脚本,内容如下:

using UnityEngine;using System.Collections;public class ChangeAlpha : MonoBehaviour {Material mat;float alpha = 0f;bool isAdd = true;// Use this for initializationvoid Start () {mat = renderer.material;}// Update is called once per framevoid Update () {if(alpha>1){isAdd = false;}if(alpha<0){isAdd = true;}if(isAdd){alpha += 0.01f;}else{alpha -= 0.01f;}mat.SetFloat ("_MyFloat", alpha);}}

3.新建一个物体(cube),将上面的shader和c#脚本应用到此物体。

OK

0 0
原创粉丝点击