• Unity3d 添加启动过渡场景


    Unity5个人版会添加Unity Logo作为启动画面,但Unity Logo结束后可以再添加一个自己的启动画面,pro版的可以在Edit→Project Settings→Player→Splash Image→去掉勾来跳过Unity自己的启动画面。

    下面步入正题:

    新建一个C#脚本 LHSplashScreens.cs

     1 using UnityEngine;
     2 using System.Collections;
     3 public enum FadeStatus
     4 {
     5   FadeIn,
     6   FadeWaiting,
     7   FadeOut
     8 }
     9 public class LHSplashScreens : MonoBehaviour 
    10 {
    11   public string levelToLoad;
    12   public bool waitForInput;
    13   public float timeFadingInFinished;
    14   public Sprite splashSprite;
    15   private float m_fadeSpeed;
    16   private float m_waitTime;
    17   private float m_alpha;
    18   private FadeStatus m_status;
    19   private SpriteRenderer m_splashSpriteRenderer;
    20   public LHSplashScreens()
    21   {
    22     levelToLoad = "";
    23     m_fadeSpeed = 0.3f;
    24     m_waitTime = 0.5f;
    25     m_status = FadeStatus.FadeIn;
    26   }
    27   void Awake()
    28   {
    29     Application.targetFrameRate = 60;
    30   }
    31   // Use this for initialization
    32   void Start () 
    33   {
    34     if (Application.levelCount <= 1 || levelToLoad == "")
    35     {
    36       Debug.LogWarning("Invalid levelToLoad value.");
    37     }
    38     GameObject m_splashSpriteGO = new GameObject("SplashSprite");
    39     m_splashSpriteGO.AddComponent<SpriteRenderer>();
    40     m_splashSpriteRenderer = m_splashSpriteGO.GetComponent<SpriteRenderer>();
    41     m_splashSpriteRenderer.sprite = splashSprite;
    42     Transform m_splashSpriteTransform = m_splashSpriteGO.gameObject.transform;
    43     m_splashSpriteTransform.position = new Vector2(0f, 0f);
    44     m_splashSpriteTransform.parent = this.transform;
    45   }
    46   // Update is called once per frame
    47   void Update () 
    48   {
    49     FadeStatus fadeStatus = m_status;
    50     if (fadeStatus == FadeStatus.FadeIn)
    51     {
    52       m_alpha += m_fadeSpeed * Time.deltaTime;
    53     }
    54     else if (fadeStatus == FadeStatus.FadeWaiting)
    55     {
    56       if ((!waitForInput && Time.time >= timeFadingInFinished + m_waitTime) || (waitForInput && Input.anyKey))
    57       {
    58         m_status = FadeStatus.FadeOut;
    59       }
    60     }
    61     else if (fadeStatus == FadeStatus.FadeOut)
    62     {
    63       m_alpha -= m_fadeSpeed * Time.deltaTime;
    64     }
    65     UpdateSplashAlpha();
    66   }
    67   private void UpdateSplashAlpha()
    68   {
    69     if (m_splashSpriteRenderer != null)
    70     {
    71       Color spriteColor = m_splashSpriteRenderer.material.color;
    72       spriteColor.a = m_alpha;
    73       m_splashSpriteRenderer.material.color = spriteColor;
    74       if (m_alpha > 1f)
    75       {
    76         m_status = FadeStatus.FadeWaiting;
    77         timeFadingInFinished = Time.time;
    78         m_alpha = 1f;
    79       }
    80       if (m_alpha < 0)
    81       {
    82         if (Application.levelCount >= 1 && levelToLoad != "")
    83         {
    84           Application.LoadLevel(levelToLoad);
    85         }
    86       }
    87     }
    88   }
    89 }

    在你工程中,建立一个新的场景,作为游戏的启动场景。

    把LHSplashScreens.cs脚本挂在场景中可以启动了的对象中,设置参数:

    Level To Load: 完成启动画面后你需要加载的场景

    Splash Sprite:过渡使用的logo sprite

    运行之后就可以看到一张图片渐显渐隐之后跳转到你指定的场景中。

    感谢Cocos2Der-CSDN:原文地址: http://blog.csdn.net/cocos2der/article/details/44099095

  • 相关阅读:
    装饰者设计模式
    Base64技术:把对象转变成字符串
    Android获取网络数据进行GZIP解压
    自定义Button成进度条
    Android:TextView最小行数设置
    介绍两个Android不常用的Drawable:GradientDrawable和 StateListDrawable
    Json介绍
    Android自定义XML属性
    Android手机图片适配问题
    AsyncTask
  • 原文地址:https://www.cnblogs.com/UnrealEra/p/5896478.html
Copyright © 2020-2023  润新知