Unity3D特效-场景淡入淡出

摘要:
//Blit将dest设置为活动渲染纹理,并将材质上的source设置为//_ MainTex属性,然后绘制一个全屏框。

        最近公司开始搞Unity3D..整个游戏..特效需求还是比较多的.关于UI部分的特效淡入淡出.看网上用的方法都是用个黑东东遮挡然后设置alpha这么搞....本大神感觉非常的low.而且很渣.故奋笔疾书借此文鄙视那些low方式.

关于这种处理用shader配合Material非常简单的.先来介绍下使用了哪些东东.

1.肯定是需要一个脚本的.本人用的C#.当然JS也是可以的. 需要把脚本bind到主摄像机..因为我们需要重载Camera的OnRenderImage借此来获得屏幕的sampler2D(就是屏幕截图吧可以这么理解 shader里面sampler2D就是一个texcood)

[csharp]view plaincopy
 
在CODE上查看代码片派生到我的代码片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Test1 : MonoBehaviour {  
  5.     public Material ma;  
  6.     //初始化  
  7.     void Start () {  
  8.         ma = new Material(Shader.Find("Custom/Test3")); //创建一个材质  
  9.     }  
  10.   
  11.     //这允许你使用基于shader的过滤器来处理最后的图片,  
  12.     //进入的图片是source渲染纹理,结果是destination渲染纹理。  
  13.     void OnRenderImage (RenderTexture source,  RenderTexture destination) {  
  14.         //拷贝源纹理到目的渲染纹理。这主要是用于实现图像效果。  
  15.         //Blit设置dest到激活的渲染纹理,在材质上设置source作为  
  16.         //_MainTex属性,并且绘制一个全屏方块。  
  17.         Graphics.Blit(source, destination, ma);   
  18.     }  
  19. }  


2.如果需要控制淡入淡出.就要使用材质的SetXXX接口来设置Shader的Uniform.Shader的源码如下:

  1. Shader "Custom/Test3" {  
  2.     Properties {  
  3.         _MainTex ("Base (RGB)", 2D) = "white" {}  
  4.         _Float1("Float1",Float) = 0.0  
  5.     }  
  6.   
  7.     SubShader {  
  8.         Pass {  
  9.             CGPROGRAM  
  10.   
  11.             #pragma vertex vert  
  12.             #pragma fragment frag  
  13.   
  14.             uniform sampler2D _MainTex;  
  15.             uniform float _Float1;   
  16.               
  17.             struct Input {  
  18.                 float4 pos : POSITION;  
  19.                 float2 uv : TEXCOORD0;  
  20.             };  
  21.   
  22.             struct v2f {  
  23.                 float4 pos : POSITION;  
  24.                 float2 uv : TEXCOORD0;  
  25.             };  
  26.   
  27.             v2f vert( Input i) {  
  28.                 v2f o;  
  29.                 o.pos = mul (UNITY_MATRIX_MVP, i.pos);  
  30.                 o.uv = i.uv;  
  31.                 return o;  
  32.             }  
  33.   
  34.             float4 frag (v2f i) : COLOR {              
  35.                 float4 outColor;                  
  36.                 outColor = tex2D( _MainTex, i.uv) + _Float1;  
  37.                 return outColor;  
  38.             }  
  39.             ENDCG  
  40.         }  
  41.     }  
  42.     Fallback off  
  43. }  

3. 在材质中可以看到 Float1这个Float值.改变其值就会看到整个画面明显的变化.如果想黑屏就往下调.如果想白屏就往上调.

Unity3D特效-场景淡入淡出第5张

Unity3D特效-场景淡入淡出第6张

Unity3D特效-场景淡入淡出第7张

4. 最后游戏里面淡入淡入就修改材质的Float1这个值就ok了.多的就不说啦. 祝大家看的开心 玩的愉快..bye bye~

附带源码: http://download.csdn.net/detail/spiritring/6781673

免责声明:文章转载自《Unity3D特效-场景淡入淡出》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EEPROM类库的使用---断电不丢失的存储芯片redis 集群搭建 以及 报错解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据

Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 unity unity Editor ScirptableObject  Unity编辑器扩展 Chapter7--使用ScriptableObject持久化存储数据 OverView APIScriptableObject是unity中的一种特别...

Unity3d—GUI按钮控件

这是自己的第一篇记录自己的技术文章,自己还是个菜鸟,有错误之处还望大家能够多多指点。1、在project视图中创建C#脚本,我命名为 Gui_test 2、然后打开该脚本,输入以下代码:1 usingSystem.Collections; 2 usingSystem.Collections.Generic; 3 usingUnityEngine; 4...

Unity3d Shader

Unity3d Shader 预览Surface Shader主要用来实现光照相关处理,可能更简洁。Vertex and Fragment Shader如果不与光照交互, 则可以用这个shader,更录活fixed function shaders固定shader主要用于老旧卡ShaderLab不管写哪种shader,最终通过shaderLab实现,其组织结...

unity 之 自定义弹出框

一、弹出框的搭建: 布局如图:Message为整个父物体,并且添加UiMessage代码。panel为遮罩。 MessageBox为整个提示框,Panel为标题,ok为确定按钮,cancel为取消按钮,retry为重试按钮,Text为提示框的文字。 注意大小写,后面代码会根据名称进行获取对应组建。 效果如下: 二、MessageBox代码: 要说明的...

Unity扩展编辑器--类型3:Custom Editors

Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点。 public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3....

Unity2019使用Gradle命令行(编译)出安卓包

在我所经历的项目组中有这几种方法来生成APK 直接在Unity生成APK,可以接入SDK 使用Unity导出Android Studio工程手动生成APK 使用Unity导出Android Studio工程命令行离线生成APK 这里记录一下我在项目组使用Android Studio出包的笔记。 使用Unity导出Android Studio工程前建议查...