在Unity中使用场景叠加的方法也许会帮助实现一些想要的效果,场景叠加用到的方法为Application.LoadLevelAdditive("SceneName");
示例
void Update()
{
if(Input.GetKey(KeyCode.Space))//按下空格
{ Application.LoadLevelAdditive("SceneName");//实现场景叠加,SceneName为要叠加的场景名 }
}
场景淡入淡出
在游戏中创建一个空物体,添加GUITexture组件,添加C#脚本名为FadeInOut
添加组件如图给GUI Texture组件Texture与Color赋值
FadeInOut脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FadeInOut : MonoBehaviour {
public float fadeSpeed;//渐隐速度
private bool sceneStarting = true;//场景是否开始
private GUITexture tex;//添加GUITexture组件
void Start()
{
tex = this.GetComponent();
tex.pixelInset = new Rect(0, 0, Screen.width, Screen.height);//初始化,位置0,0,大小屏幕大小
}
void Update()
{
if(sceneStarting)//场景开始
{
StartScene();//调用方法
}
}
private void FadeToClear()//渐显方法
{
tex.color = Color.Lerp(tex.color, Color.clear, fadeSpeed * Time.deltaTime);
}
private void FadeToBlack()//渐隐方法
{
tex.color = Color.Lerp(tex.color, Color.black, fadeSpeed * Time.deltaTime);
}
private void StartScene()//场景开始
{
FadeToClear();
if (tex.color.a <= 0.05f)//当GUI阿尔法通道小于0.05时
{
tex.color = Color.clear;//颜色变为彻底透明
tex.enabled = false;//GUITexture组件禁用
sceneStarting = false;//标识位设置为false
}
}
public void EndScene()//场景结束
{
tex.enabled = true;//激动GUITexture
FadeToBlack();//渐显变为黑色
if (tex.color.a >= 0.95f)//当大于0.95时
{
UnityEngine.SceneManagement.SceneManager.LoadScene("SceneName");//重新加载
}
}
}
网友评论