一、问题

想要在场景的转换做个过渡,不想直接的跳转。最简单的就是做个淡入淡出的效果。

二、搜索

百度基本是不指望了,资料太少,所以要用google,并且英文搜索。

搜关键字"unity3d change scene effect"(学会一点外语是多么的重要啊)

http://answers.unity3d.com/questions/8237/changing-scenes.html

http://answers.unity3d.com/questions/15289/can-you-create-transitions-between-levels-using-ap.html

还发现一个插件:

http://gameprefabs.com/products/preview/107

三、代码

using UnityEngine;
using System.Collections;public class LevelLoadFade : MonoBehaviour
{public static void FadeAndLoadLevel(string levelName, Texture2D fadeTexture, float fadeLength){if (null == fadeTexture){FadeAndLoadLevel(levelName, Color.white, fadeLength);}GameObject fade = new GameObject("Fade");fade.AddComponent<LevelLoadFade>();fade.GetComponent<LevelLoadFade>().DoFade(levelName, fadeLength, fadeTexture, Color.white, false);            }public static void FadeAndLoadLevel(string levelName, Color color, float fadeLength){color.a = 1;Texture2D fadeTexture = new Texture2D(1, 1);fadeTexture.SetPixel(0, 0, color);fadeTexture.Apply();DontDestroyOnLoad(fadeTexture);GameObject fade = new GameObject("Fade");fade.AddComponent<LevelLoadFade>();fade.GetComponent<LevelLoadFade>().DoFade(levelName, fadeLength, fadeTexture, color, true);}private Texture2D     m_FadeTexture;private Rect         m_Rect;private Color         m_Color;void Awake(){m_Rect = new Rect(0, 0, Screen.width, Screen.height);m_FadeTexture = null;}void OnGUI(){if (m_FadeTexture != null){GUI.depth = -100;GUI.color = m_Color;GUI.DrawTexture(m_Rect, m_FadeTexture);}}void DoFade(string levelName, float fadeLength, Texture2D fadeTexture, Color color, bool destroyTexture){transform.position = Vector3.zero;// Don't destroy the fade game object during level load
        DontDestroyOnLoad(gameObject);m_Color = color;m_FadeTexture = fadeTexture;StartCoroutine(DoCoroutineFade(levelName, fadeLength, fadeTexture, color, destroyTexture));}IEnumerator DoCoroutineFade(string levelName, float fadeLength,  Texture2D fadeTexture, Color color, bool destroyTexture){// Fade texture infloat time = 0;while (time < fadeLength){time += Time.deltaTime;m_Color.a = Mathf.InverseLerp(0, 1, time/fadeLength);yield return null;}// Fadeout to start withcolor.a = 1;Application.LoadLevel(levelName);// Fade texture outtime = 0;while (time < fadeLength){time += Time.deltaTime;m_Color.a = Mathf.InverseLerp(1, 0, time/fadeLength);yield return null;}m_Color.a = 0;m_FadeTexture = null;Destroy(gameObject);if (destroyTexture){Destroy(m_FadeTexture);}}// Update is called once per framevoid Update () {}
}

这边用的是

Application.LoadLevel

所以,会阻塞,如果是差的机子,还是会卡在你的Fade的画面,如果用的是异步的

  Application.LoadLevelAsync

那就会是把淡入和淡出一起播了。。然后再卡住。。这个可能得再考虑下,主要是异步的加载完成给的值不太准,似乎没法拿来用做完成进度百分比判断。

四、总结

其实我想的效果是在淡出的时间就开始加载,然后再没加载完的时候就卡在Fade的界面,之后再淡入。不过这淡入淡出的效果在好的机子上的效果还是不错的,大家可以试试看。

转载于:https://www.cnblogs.com/gameprogram/archive/2012/08/14/2638454.html

Unity中的淡入淡出效果相关推荐

  1. Unity实现屏幕淡入淡出效果

    预期效果:为实现在进入新场景时的淡入淡出效果 编译器版本:2021.3.19f1c1 使用组件:UI --> RawImage 在Unity场景切换的时候,使用RawImage制作场景的淡入淡出 ...

  2. html5游戏开发马赛克对比,HTML5如何在canvas中实现马赛克的淡入淡出效果

    HTML5如何在canvas中实现马赛克的淡入淡出效果 发布时间:2020-07-10 16:43:07 来源:亿速云 阅读:145 作者:Leah 本篇文章给大家分享的是有关HTML5如何在canv ...

  3. 《迷失岛2》游戏开发框架开发日记:场景切换和淡入淡出效果

    M_Studio的教程:[<迷失岛2>游戏框架开发01:实现场景转换|Unity教程] 搭建场景 使用下载好的素材搭建场景H1-H4和H2A.永久的场景Persistent,将场景都拖拽到 ...

  4. 004_淡入淡出效果

    1. jQuery淡入淡出方法 1.1. 通过jQuery, 您可以实现元素的淡入淡出效果. 1.2. jQuery拥有下面四种fade方法: fadeIn().fadeOut().fadeToggl ...

  5. 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)

    淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透 ...

  6. 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果

    来园子也有一段时间了,一直没时间写点东西,说实话刚开始也不知道写什么,一直以来对验证码识别比较感兴趣,曾经想着自己处理图形实现识别验证码, 不过感觉对我来说太难了,偶然中再网上发现了Tesseract ...

  7. 【转】C#使用GDI+制作背景颜色淡入淡出效果的按钮

    C#使用GDI+制作背景颜色淡入淡出效果的按钮 2010-04-14  来自:CNBLOG  字体大小:[大 中 小] 摘要:本文介绍C#使用GDI+制作背景颜色淡入淡出效果的按钮,并提供完整的示例和 ...

  8. 利用API函数实现图像淡入淡出效果(VB)

    利用API函数实现图像淡入淡出效果     一般传统的实现两个PictureBox之间图像的淡入淡出效果都需要使用大量的API函数并进行复杂的调色板以及 绘图设备(Device Context)的操作 ...

  9. 利用API函数实现图像淡入淡出效果 (转)

    利用API函数实现图像淡入淡出效果 (转)[@more@]利用 api 函数实现图像淡入淡出效果 一般传统的实现两个PictureBox之间图像的淡入淡出效果都需要使用大量的API函数并进行复杂的调色 ...

最新文章

  1. Amoeba软件实现mysql读写分离
  2. linux代码中能出现中文吗_Linux命令很熟悉,你知道它们的英文全称和中文解释吗?...
  3. Eclipse+Web3j开发以太坊应用
  4. 游戏开发-从零开始 002
  5. linux内核的冒险md来源释义# 14raid5非条块读
  6. 重复数据删除:块级技术VS.字节级技术
  7. php中Session的生成机制、回收机制和存储机制探究
  8. 查看手机是否安装微信客户端
  9. java 多线程统计质数,Java 七 多线程计算某个范围内的质数
  10. 数据爆炸时代,浪潮K1 Power释放新算能
  11. python内置的数据结构_Python内置数据结构
  12. JZOJ 1036. 【SCOI2009】迷路
  13. 百度、谷歌、亚马逊、微软神同步:被盯上的智能语音排位赛
  14. Druid连接池原理
  15. 2022,共赴一场微小的,具象的英雄主义
  16. 基于Retrofit框架的金山API翻译功能案例
  17. C语言作业3-数组-2英文句子逆向输出
  18. 网络应用自建利器-Google AppEngine
  19. scala sortBy and sortWith
  20. 告别神秘客,人力成本节约90%,DuDuTalk工牌用AI帮你智慧巡店

热门文章

  1. python 调用event handler_python-如何获取调用事件的窗口小部件的ID(...
  2. 韶音耳机连不上电脑_骨传导耳机哪个牌子好,骨传导耳机推荐
  3. 华为亮度自动调节没了_一加8T不止有8192级自动亮度调节 刘作虎在线种草
  4. 1.72java8_JDK 1.7 1.8 新特性
  5. java frame paint_一个简单的java frame画图(paint)问题
  6. 非锐化掩膜与高提升滤波
  7. linux vg 镜像,Linux下载_Linux系统各种版本ISO镜像下载(redhat,centos,oracle,ubuntu,openSUSE)...
  8. Javascript实现网页水印(非图片水印)
  9. Windows Server 2012配置***服务环境
  10. Codeforces Round #335 (Div. 2)