Unity实现场景加载渐入渐出效果

项目中要用到加载场景的时候有个渐入渐出的效果,做了一下,跟大家分享

首先,创建两个场景Main和Game场景;

其次,在Main场景中创建FandeScene.cs脚本,创建Fade空对象,挂载,给一张黑色的图片,拖成预设体,同样也拖到Game场景中。

using UnityEngine;
using System.Collections;

public class FadeScene : MonoBehaviour {

    public Texture blackTexture;
    private float alpha = 1.0f;
    public float fadespeed = 0.2f;
    private int fadeDir = -1;
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }

    void OnGUI()
    {
            alpha += fadeDir * fadespeed * Time.deltaTime;
            GUI.color = new Color (GUI.color .r ,GUI.color .g ,GUI.color .b,alpha);
            GUI.DrawTexture (new Rect (0,0,Screen .width ,Screen .height), blackTexture);
    }

    public float BeginFade(int direction)
    {
        fadeDir = direction;
        return 1 / fadespeed;
    }

    void OnLevelWasLoaded()
    {
        Debug.Log ("场景加载完毕!");
        BeginFade (-1);  
    }

}

再次,加载场景

协程加载
    IEnumerator FadeLoadScene()
    {
        float time = GameObject.Find ("Fade").GetComponent <FadeScene> ().BeginFade (1);
        yield return new WaitForSeconds (time);
        SceneManager.LoadSceneAsync ("Game");
    }

这样运行,就会出现渐入渐出的效果。

时间: 2024-12-30 09:48:27

Unity实现场景加载渐入渐出效果的相关文章

Unity游戏场景加载Loading详解

游戏中的Loading现在都做得很漂亮,但是归根究底就两种类型,静态Loading和动态Loading.静态Loading可能就是一张背景图.而动态的Loading就是在读取的同时有一个东西在“转圈”. 1.静态Loading:优点:读取场景使用同步的方法就可以,因为是同步方法所以读取的速度是最快的,也不用更新界面,因为同步执行方法的时候程序在等待读取结束.执行Application.LoadLevel(“name”);同步方法来加载你的场景. 缺点:Loading的时候如果界面不动,那么用户体

unity 场景加载和对象消失的几种方法

场景加载: Application.LoadLevel(Application.loadedLevel); // 重新调用场景 Application.LoadLevel(0); // 调用你在设置里摆放的场景,按你的摆放顺序调 场景加载后保留当前指定的对象,留到下一个场景: DontDestroyOnLoad (transform.gameObject); 结束游戏: Application.Quit() ; gameObject.renderer.enabled //是控制一个物体是否在屏幕

仿Expandablelistview效果的ListView(加入了子列表渐入渐出的动画)

新来的项目要求第一眼一看就是用Expandablelistview.效果图如下:             其实本来希望直接使用Expandablelistview的,但是需求Expandablelistview在展开一个group时有个动画效果--该group的child一个一个滑动出来并且把下面的group"挤"下去.本以为这个Expandablelistview组件肯定有相关方法的,但竟然没有!网上居然也查不到(有很多人问同样的问题,答案却都是:继承Expandablelistvi

Unity 显示Loading(加载)进度 对于网上流行的方法进行更正

实际上就是MOMO贴出来的方法其实是有问题的,用过的才知道.至于别的几乎不用找,根本一个抄一个,抄来抄去都是一样,没自己的东西. 用过MOMO那个方法的都应该会发现了,当进度条开始显示的时候,基本上已经加载到80%了,可能也跟Unity版本有关,我的是4.3.4 .但是实际上Unity的工作原理差不多就那样,在Start里面直接开始加载的协程,实际上一开始就会阻塞,导致画面刚刚渲染出来的时候,已经完成了一部分的加载,而很多资源会在一开始就加载了,如果这里的资源太多了,那么就会像我一样,显示很长时

UNITY 多SCENE加载与编辑

Unity内部场景的加载分为两步: Loading.是指从文件.内存(主要是Streamed scene AssetBundle)中加载Scene的内容,创建并读取所有相关的Game objects.Assets以及Scene game managers.所有的IO操作都在这一步完成,所以它是比较耗时的过程.当这一步完成的时候,我们内部会将加载进度标记为90%. Awaking.主要是一些轻量级的操作,比如在Transform的Awaking的时候,我们会将Game objects加入到它所属于

js原生实现div渐入渐出

jq对渐入渐出进行封装,简单的使用连个方法就可以实现.fadeIn(),fadeOut();如果我们界面没有使用jq那么原生怎么实现呢? 我们讲解一下,这个原理.当我们要实现渐入的时候,首先是让隐藏的div慢慢的显示,通过让opacity慢慢从 0.0 (完全透明)到 1.0(完全不透明).渐出就是逻辑反过来的. 下面我们直接贴代码: css: * {margin:0; padding:0} body {font:12px Verdana,Arial; color:#777; backgroun

Unity的动态加载简单使用

Unity的动态加载简单使用Unity可以快速,轻量化的实现IOC,不用自已写类似反射代码来动态加载类或dll了使用Unity先要用nuget获取相关引用文件Unity可通过代码或config文件来配置要加动态加载的内容 使用示例 static void Main(string[] args) { Console.WriteLine("'Y' use Config Register Type,Otherwise use Code Register Type"); bool isUseC

升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下的"磁盘工具") 新建一分区,名称大小任意,格式为MAC OS 扩展(日志式) 将unity工程移至新分区 OK,工程已经可以正常加载了 解决办法二: 1. 升级Unity版本 (如Unity5.6.6, Unity 2018.1 均可以)   2. 安装相应的补丁版Unity3D 参考链

场景加载

1.可以在A场景中某一物体的Awake方法中启动协程提前加载下一个需要用到的场景 IEnumerator loadScence(string sceneName)    {        async = SceneManager.LoadSceneAsync(sceneName);        async.allowSceneActivation = false;//使场景加载完而不切换.        yield return null;    } 在需要切换场景时再设置async.allo