Unity场景跳转时音乐继续播放

本文介绍了一种在Unity中实现跨场景音乐连续播放的方法。通过将音频文件挂载在MainCamera上,并使用自定义的MusicController脚本来控制音乐播放,确保在场景跳转时音乐不会中断。该脚本利用DontDestroyOnLoad函数防止对象在加载新场景时被销毁。

1.首先将音频文件挂载在MainCamera上
在这里插入图片描述
2.编写脚本控制跳转场景时音乐继续播放,不自动销毁

public class MusicController : MonoBehaviour {

    static MusicController instance = null;
    public static MusicController Instance
    {
        get
        {
            return instance;
        }
    }

    void Awake()
    {
        if (instance != null && instance != this)
        {
            Destroy(this.gameObject);
            return;
        }
        else
        {
            instance = this;
        }
        DontDestroyOnLoad(this.gameObject);//使对象目标在加载新场景时不被自动销毁
    }
	
}

3.将脚本挂载在MainCamera上,效果如下
在这里插入图片描述
点击开始游戏跳转场景后,音乐继续播放
在这里插入图片描述

Unity场景跳转是一个常见的功能需求,主要用于切换游戏的不同部分或阶段。以下是关于 Unity 场景跳转的基本介绍: ### 使用 `SceneManager` 实现场景跳转Unity 5 开始,推荐使用 `UnityEngine.SceneManagement.SceneManager` 来管理场景加载和跳转操作。 #### 基本步骤: 1. **引入命名空间** 首先需要导入 Scene Management 的命名空间: ```csharp using UnityEngine; using UnityEngine.SceneManagement; // 引入此命名空间用于场景管理 ``` 2. **创建方法实现跳转** 可通过下面几种方式之一完成场景跳转: - 按照索引值加载场景: 索引值对应于编辑器内 “Build Settings” 设置里各个场景的位置编号。 ```csharp SceneManager.LoadScene(0); // 加载第一个场景(假设其索引为 0) ``` - 根据名称加载场景: 如果已知目标场景的确切名字,则可以直接指定它进行加载。 ```csharp SceneManager.LoadScene("SceneName"); // 替换 "SceneName" 成实际的场景名 ``` 3. **异步加载提高性能** 对大型复杂项目来说,同步阻塞式加载可能会影响用户体验,此可以采用异步加载的方式优化流程。 ```csharp AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("NextLevel"); while (!asyncLoad.isDone) { float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f); Debug.Log($"Loading Progress: {progress * 100:F2}%"); yield return null; } ``` 4. **附加选项控制加载模式** 当调用 LoadScene 方法还可以传递第二个参数来决定如何处理新旧场景之间的数据清理等问题,默认行为会卸载当前活动场景的所有内容;如果想要保留现有状态并叠加新增元素的话可以选择 Additive 参数。 ```csharp SceneManager.LoadScene(sceneIndex, LoadSceneMode.Additive); ``` 以上便是基于 C# 脚本在 Unity 编程环境中实现简单以及进阶版场景切换的主要思路和技术点概述啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值