Unity3D——场景转换效果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_lvril/article/details/80627587

功能介绍:加载场景时画面会逐渐变亮,退出场景时(或者角色死亡)画面逐渐变暗。


  1. 添加一个RawImage对象,设置Tag。
  2. 使其铺满整个屏幕
  3. 设置Color为合适的值,例RGBA(128,128,128,178);
  4. Canvas下添加一个Ganvas Group组件,设置Alpha为0.5;

添加脚本:

using UnityEngine.UI;	                //引入UI
using UnityEngine.SceneManagement;      //场景转换

public float fadeSpeed=0.5f;		//渐变速度
private bool sceneStarting=ture;	//游戏是否开始(或者其他控制标志)
private RawImage rawImage=null;		//RawImage对象

void Awake(){
	RawImage=GetComponent<RawImage>();
}

//控制rawImage颜色变化
void FadeToClear(){
	rawImage.color=Color.Lerp(rawImage,color,Color.clear,fadeSpeed*Time.deltaTime);
}
void FadeToBlack(){
	rawImage.color=Color.Lerp(rawImage,color,Color.black,fadeSpeed*Time.deltaTime);
}

//开始和结束场景
void StartScene(){
	FadeToClear();
	if(rawImage.color.a<0.05f){
		rawImage.color=Color.clear;
		rawImage.enable=false;
		sceneStarting=false;
	}
}
void EndScene(){
	rawImage.enable=true;
	FadeToBlack();
	if(rawImage.color.a>=0.95f){
		SceneManager.LoadScene(0);
	}
}

//开始游戏调用
void Update(){
	if(sceneStarting)
		StratScene();
}

开始游戏,调用StartScene()函数,RawImage的颜色由初始值均匀朝(0,0,0,0)变化,当a小于0.05时,设置RawImage的颜色为Color.clear 。enable=false , 标志位为false。

结束游戏时,RawImage的enable=true。颜色朝(0,0,0,1)变化,a值达到一定值,重新加载场景。

也可以通过调用此脚本对象的标志位,来实现其他功能。

猜你喜欢

转载自blog.csdn.net/wang_lvril/article/details/80627587