前几天在玩我叫MT 2游戏的时候发现打开他们应用的时候发现他们Logo淡入淡出的效果做的挺好的,例如第一张是运营商腾讯的logo第二张是他们公司的游戏logo。我们也来模仿一下:

第一张图片:运营商的

这是第二张图片,游戏公司自己的。

1,新建测试工程。

  

脚本文件SplashScreen.cs

  

using UnityEngine;
using System.Collections; public class SplashScreen : MonoBehaviour { //要加载的关卡
public string LevelToLoad="DiveUnityDemo";
//Logo贴图
public Texture2D SplashLogo;
//渐入渐出速度
public float FadeSpeed=0.3F;
//等待时间
public float WaitTime=0.5F; #region 渐入渐出的类型
public enum SplashType
{
LoadLevelThenFadeOut,
FadeOutThenLoadLevel
}
public SplashType Type=SplashType.LoadLevelThenFadeOut;
#endregion #region 渐入渐出的状态
public enum FadeStatus
{
FadeIn,
FadeWait,
FadeOut
}
private FadeStatus mStatus=FadeStatus.FadeIn;
#endregion //是否允许玩家触发渐入渐出事件
public bool WaitForInput=true;
//当前透明度
private float mAlpha=0.0F;
//摄像机
private Camera mCam;
private GameObject mCamObj;
//Logo贴图位置
private Rect mSplashLogoPos;
//渐入结束的时间
private float mFadeInFinishedTime;
//关卡是否加载完毕
private bool LevelisLoaded=false; void Start ()
{
//保存相机
mCam=Camera.main;
mCamObj=Camera.main.gameObject;
//计算Logo绘制的位置
mSplashLogoPos.x=(Screen.width * 0.5F-SplashLogo.width * 0.5F);
mSplashLogoPos.y=(Screen.height * 0.5F-SplashLogo.height * 0.5F);
mSplashLogoPos.width=SplashLogo.width;
mSplashLogoPos.height=SplashLogo.height;
//如果是渐出后加载关卡则保留相机
if (Type == SplashType.LoadLevelThenFadeOut)
{
DontDestroyOnLoad(this);
DontDestroyOnLoad(Camera.main);
}
//检查目标关卡是否为空
if ((Application.levelCount <= ) || (LevelToLoad == ""))
{
Debug.Log("There is not have the level to load please check again");
return;
}
} void Update ()
{
switch(mStatus)
{
case FadeStatus.FadeIn:
mAlpha+=FadeSpeed * Time.deltaTime;
break;
case FadeStatus.FadeOut:
mAlpha-=FadeSpeed * Time.deltaTime;
break;
case FadeStatus.FadeWait:
//当设定为FadeWait时可根据时间判定或者玩家触发进入下一个状态
if((!WaitForInput && Time.time>mFadeInFinishedTime+WaitTime) || (WaitForInput && Input.anyKey))
{
mStatus=FadeStatus.FadeOut;
}
break;
} } void OnGUI()
{
if(SplashLogo!=null)
{
//绘制Logo
GUI.color=new Color(GUI.color.r,GUI.color.g,GUI.color.b,Mathf.Clamp(mAlpha,,));
GUI.DrawTexture(mSplashLogoPos,SplashLogo); //状态判断
if(mAlpha>1.0F)
{
mStatus=FadeStatus.FadeWait;
mFadeInFinishedTime=Time.time;
mAlpha=1.0F;
//如果需要在渐入结束后加载关卡
if(Type==SplashType.LoadLevelThenFadeOut)
{
mCam.depth=-; }
} if(mAlpha<0.0F)
{
//如果需要在关卡加载完后渐出
if(Type==SplashType.FadeOutThenLoadLevel)
{
Application.LoadLevel("sence2");
}else
{
Destroy(mCamObj);
Destroy(this);
}
}
} if(mStatus==FadeStatus.FadeWait)
{
mStatus = FadeStatus.FadeOut;
StartCoroutine("loadSence2");
//Debug.Log("请按任意键继续");
}
} public IEnumerator loadSence2()
{
yield return new WaitForSeconds(2f);
Application.LoadLevel("sence2"); }
void OnLevelWasLoaded(int index)
{
//如果目标关卡已加载需要手动销毁场景中的GUI和AudioListener
if(LevelisLoaded)
{
Destroy(mCam.GetComponent<AudioListener>());
Destroy(mCam.GetComponent<GUILayer>());
}
} }

将脚本挂到MainCamera上,添加图片即可!

运行效果:

源代码github连接:https://github.com/wuzhangwuzhang/test/tree/master/testFade

 

Unity 启动画面淡入淡出的更多相关文章

  1. Unity 动态载入Panel并实现淡入淡出

    unity版本:4.5 NGUI版本:3.6.5 参考链接:http://tieba.baidu.com/p/3206366700,作者:百度贴吧 水岸上 动态载入NGUI控件,这里用Panel为例说 ...

  2. C# 仿金山毒霸启动和关闭淡入淡出效果

    原文 C# 仿金山毒霸启动和关闭淡入淡出效果 01 #region 窗体关闭效果 02   03 #region 私有方法 04 [DllImportAttribute("user32.dl ...

  3. Unity 阴影淡入淡出效果中Shader常量 unity_ShadowFadeCenterAndType和_LightShadowData的问题

    由于Universal Render Pipeline目前(2020年4月1日)把阴影淡入淡出这个功能竟然给取消了…我自己拿片元位置到相机位置的距离进行了一个淡化,但是阴影边缘老是被裁切…后来研究了一 ...

  4. Pyqt QSplashScreen启动画面

    多大数应用程序启动时都会在程序完全启动时显示一个启动画面,在程序完全启动后消失.程序启动画面可以显示一些有关产品的信息,让用户在等待程序启动的同时了解有关产品的功能,也是一个宣传的方式.QSplash ...

  5. Unity3D 4.61 实现淡入淡出的场景过渡方法。

    还在学习过程中,如果有大大看到请指点. orz原来官方就有了更好的处理方法的教程,具体查看下面视屏. [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(五) 屏幕渐变效 ...

  6. Axure实现淡入淡出效果

    小伙伴们有可能在各大网站看到淡入淡出效果的动画,比如淘宝.京东,淘宝每天会把各种打折促销.今日推荐.限时抢购等做成淡入淡入或者向右活动等类似翻页的效果放在首页,吸引顾客的眼球,那么如何使用Axure来 ...

  7. 新手学习FFmpeg - 调用API编写实现多次淡入淡出效果的滤镜

    前面几篇文章聊了聊FFmpeg的基础知识,我也是接触FFmpeg不久,除了时间处理之外,很多高深(滤镜)操作都没接触到.在学习时间处理的时候,都是通过在ffmpeg目前提供的avfilter基础上面修 ...

  8. jQuery淡入淡出轮播图实现

    大家好我是 只是个单纯的小白,这是人生第一次写博客,准备写的内容是Jquery淡入淡出轮播图实现,在此之前学习JS写的轮播图效果都感觉不怎么好,学习了jQuery里的淡入淡出效果后又写了一次轮播图效果 ...

  9. 为你的Web程序加个启动画面

    .Net开发者一定熟悉下面这个画面: 这就是宇宙第一IDE Visual Studio的启动画面,学名叫Splash Screen(或者Splash Window).同样,Javar们一定对Eclip ...

随机推荐

  1. 安装oracle11g未找到文件WFMLRSVCApp.ear文件

    win7_64位系统,安装oracle11gR2时,报错提示: 未找到文件...WFMLRSVCApp.ear文件 解决方法如下: 将下载的两个压缩包解压至同一目录(合并)再安装即可解决此类问题.

  2. java基础之数组

    数组的定义 数组的应用 1, 2, 3, 4,

  3. [转]CSS目标伪类E:target

    CSS3 target 伪类不得不说那些事儿(纯CSS实现tab切换) 是不是觉得target有点眼熟?! 今天要讲的不是HTML的<a>标签里面有个target属性. target伪类是 ...

  4. 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

    在 SELECT 后加 TOP 100 PERCENT .

  5. List.removeAll()方法失效

    List.removeAll()方法失效 前几天遇到List.removeAll()方法失效,测试了半天都没测出来,后面跟老大在那边调试了半天,最后终于找出原因,以后要是谁遇到这个奇葩的问题可以借鉴参 ...

  6. 为自己的Android应用添加广告

    平时也写了不少Android小应用,但是都是做练习之用,从来没有想过添加广告赚钱这一说. 个人是非常反感在应用内添加广告这种行为的,非常影响用户体验,不小心点到广告的话,手机流量哗哗地就没了··· 但 ...

  7. sql 创建临时表

    declare @channelid varchar(100) set @channelid='''WH00026'',''WH00083''' declare @sql varchar(1000) ...

  8. 最大公约数(gcd):Euclid算法证明

    1个常识: 如果 a≥b 并且 b≤a,那么 a=b. 2个前提: 1)只在非负整数范围内讨论两个数 m 和 n 的最大公约数,即 m, n ∈ N. 2)0可以被任何数整除,但是0不能整除任何数,即 ...

  9. C语言--位运算符

    一.位运算符 1.按位与:& 1> 功能 * 只有对应的两个二进制位为1时,结果位才为1,否则为0 * 举例:10用二进制表示为1010,  7用二进制表示为0111.对两个数值进行&a ...

  10. SpotMini末端控制策略

    相信很多人都注意到了“机器人学家”两天前推送的Boston Dynamics新机器人Spot-Mini.除了一如既往独领风骚的步态控制外,这次BD还给机器人增加了一个机械臂.视频中的一幕挺有趣,就是S ...