一、建立一个标签类
用于定义本Demo中所有出现的Tag类型 ,
并用const修饰 使变量不可改变。
///<summary>
/// 标签类
///</summary>
public class Tags : MonoBehaviour
{
public const string player = "Player";
public const string gameController = "GameController";
public const string enemy = "Enemy";
public const string fader = "Fader";
public const string mainCamera = "MainCamera";
}
二、设置游戏开始场景屏幕淡入淡出效果
1、在Hierarchy面板中添加UI-Canvas
2、再在其中添加组件RAWImage
3、将Texture设置为纯黑色
4、改变锚点,将锚点设置为中心
将Width和Height设置为0
注:不可用scale改变大小
5、编写代码
获得RectTransform组件
使用函数RectTransform.sizeDelta ,将RawImage大小设置为屏幕大小
使用Color.Lerp插值函数 设置颜色渐进效果
最后用SceneManager.LoadScene函数 加载场景
注:函数中的t值 要乘上Time.Deltatime
三、全部代码块
///<summary>
///场景屏幕淡入淡出
///</summary>
public class FadeInOut : MonoBehaviour
{
public float fadeSpeed = 1.5f;//渐隐渐现时间
private bool sceneStart = true;//设置屏幕开始变量
private RawImage RawImage;//定义RawImage组件引用
private RectTransform RectTransform;
private void Start()
{
RectTransform= GetComponent<RectTransform>();
//获得此脚本所附物体上的RawImage组件
RawImage = GetComponent<RawImage>();
//将RawImage的大小设置为屏幕大小
RectTransform.sizeDelta = new Vector2(Screen.width,Screen.height);
}
private void Update()
{
if (sceneStart) StartScene();
}
/// <summary>
/// 渐现方法
/// </summary>
private void FadeToClear()
{
RawImage.color = Color.Lerp(RawImage.color,Color.clear,fadeSpeed*Time.deltaTime);
}
/// <summary>
/// 渐隐方法
/// </summary>
private void FadeToBlack()
{
RawImage.color = Color.Lerp(RawImage.color, Color.black, fadeSpeed * Time.deltaTime);
}
/// <summary>
/// 开始场景
/// </summary>
private void StartScene()
{
FadeToClear();
//alpha通道小于等于0.5
if (RawImage.color.a<=0.05f)
{
RawImage.color = Color.clear;
RawImage.enabled= false;
sceneStart = false;
}
}
/// <summary>
/// 结束场景
/// </summary>
private void EndScene()
{
RawImage.enabled = true;
FadeToBlack();
if (RawImage.color.a >= 0.95f)
{
SceneManager.LoadScene("Demo");
}
}
}