Unity 切换游戏场景时屏幕淡入淡出效果 第二版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using  UnityEngine;
using  System.Collections;
  
public  class  SceneFadeInOut : MonoBehaviour
{
     public  float  fadeSpeed = 1.5f;
      
     private  bool  sceneStarting =  true ;
     private  bool  sceneEnding =  false ;
      
     void  Awake()
     {
         guiTexture.pixelInset =  new  Rect(0f, 0f, Screen.width, Screen.height);
     }
      
     void  Update()
     {
         if  (sceneStarting)
         {
             StartScene();
         }
          
         if  (sceneEnding)
         {
             EndScene();
         }
     }
      
     void  FadeToClear()
     {
         guiTexture.color = Color.Lerp(guiTexture.color, Color.clear, fadeSpeed * Time.deltaTime);
     }
      
     void  FadeToBlack()
     {
         guiTexture.color = Color.Lerp (guiTexture.color, Color.black, fadeSpeed * Time.deltaTime);
     }
      
     void  StartScene()
     {
         FadeToClear();
          
         if (guiTexture.color.a < 0.05f)
         {
             guiTexture.color = Color.clear;
             guiTexture.enabled =  false ;
             sceneStarting  =  false ;
         }
     }
      
     public  void  EndScene()
     {
         guiTexture.enabled =  true ;
         FadeToBlack();
          
         if (guiTexture.color.a >= 0.95f)
         {
             sceneEnding =  false ;
             Application.LoadLevel(1);
         }
     }
      
     void  OnGUI()
     {
         if  (!sceneStarting && GUI.Button ( new  Rect(0,0,100,100), "NewLevel" ))
         {
             sceneEnding =  true ;
         }
     }
  
}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,可以通过使用Camera的深度值和渐变效果来实现相机的淡入淡出效果。具体步骤如下: 1. 在场景中创建一个空对象,命名为“CameraFade”。 2. 在“CameraFade”对象上添加一个新的Camera组件,并将其深度值设置为比主相机更高的值,以确保它始终在主相机之前显示。 3. 在“CameraFade”对象上添加一个新的Canvas组件,并将其渲染模式设置为“屏幕空间-覆盖”。 4. 在Canvas上添加一个新的Image组件,并将其颜色设置为黑色,并将Alpha值设置为0。 5. 创建一个新的C#脚本,命名为“CameraFadeEffect”。 6. 在“CameraFadeEffect”脚本中,使用以下代码实现淡入淡出效果: ``` using UnityEngine; using UnityEngine.UI; using System.Collections; public class CameraFadeEffect : MonoBehaviour { public Image fadeImage; public float fadeSpeed = 1.5f; private bool isFading = false; void Start() { fadeImage.color = Color.black; fadeImage.canvasRenderer.SetAlpha(0.0f); } public void FadeIn() { isFading = true; fadeImage.CrossFadeAlpha(1.0f, fadeSpeed, false); } public void FadeOut() { isFading = true; fadeImage.CrossFadeAlpha(0.0f, fadeSpeed, false); } void Update() { if (isFading && fadeImage.canvasRenderer.GetAlpha() == 1.0f) { isFading = false; } } } ``` 7. 在场景中创建一个新的空对象,命名为“GameManager”。 8. 在“GameManager”对象上添加一个新的C#脚本,命名为“GameManager”。 9. 在“GameManager”脚本中,使用以下代码实现淡入淡出效果的调用: ``` using UnityEngine; using System.Collections; public class GameManager : MonoBehaviour { public CameraFadeEffect cameraFadeEffect; void Start() { StartCoroutine(FadeIn()); } IEnumerator FadeIn() { cameraFadeEffect.FadeIn(); yield return new WaitForSeconds(cameraFadeEffect.fadeSpeed); cameraFadeEffect.gameObject.SetActive(false); } IEnumerator FadeOut() { cameraFadeEffect.gameObject.SetActive(true); cameraFadeEffect.FadeOut(); yield return new WaitForSeconds(cameraFadeEffect.fadeSpeed); } } ``` 10. 在需要淡入淡出效果场景中,将“GameManager”对象拖放到场景中,并将其“cameraFadeEffect”字段设置为“CameraFade”对象上的“CameraFadeEffect”脚本。 11. 在需要淡入淡出效果场景中,使用以下代码调用淡入淡出效果: ``` GameManager gameManager = FindObjectOfType<GameManager>(); StartCoroutine(gameManager.FadeOut()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值