前几天在玩我叫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. ASP.net获取当前页面的文件名,参数,域名等方法

    ASP.net后台获取当前页面的文件名 System.IO.Path.GetFileName(Request.Path).ToString(); 获取当前页面文件名,参数,域名等方法 假设当前页完整地 ...

  2. http status 源码

    private static readonly String[][] s_HTTPStatusDescriptions = new String[][] { null, new String[] { ...

  3. ASP.net MVC 向子视图传递数据

    使用 RenderPage 加载子视图 @RenderPage("~/Shared/Component/Dialog.cshtml", new { title = "He ...

  4. (转)深入理解 __doPostBack

    在我的随笔<Page,你是怎样处理回发事件的?>中曾提出一个疑问,如何得到引起页面PostBack的控件?通过阅读Page类的源码,误打误撞,无意中看到了__EVENTTARGET和__E ...

  5. silverlight visifire控件图表制作——silverlight 后台方法画图

    1.调用wcf 获取信息 private void svc_GetSingleChartDataCompleted(object sender, GetSingleChartDataCompleted ...

  6. oracle数据库ID自增长

    使用sequence --创建sequenceCREATE SEQUENCE emp_sequence      INCREMENT BY 1  -- 每次加几个      START WITH 1  ...

  7. 兼容性之IOS下label 无法点击

    今天做移动端的页面时碰到一个稀奇的问题,那就是点击label无法选中与之相关的checkbox,下面是问题代码: <li class="list-item clearfix notif ...

  8. zip格式压缩、解压缩(C#)

    压缩方法 #region 压缩 /// <summary> /// 压缩 /// </summary> /// <param name="bytes" ...

  9. Scala学习笔记--抽象成员

    package com.evor.test1 class Test1 { } object Test1{ def main(args:Array[String]):Unit = { //类参数和抽象字 ...

  10. js 日常问题记录

    1.解决ie6下css背景图不缓存 try{ document.execCommand('BackgroundImageCache',false,true); }catch(e){} 2.为ajax设 ...