unity3d Unity 2d随机音乐仅在第一次时开始

u5rb5r59  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(152)

我在编程一个简单的Unity 2d游戏,我想添加一些背景音乐,我有一个脚本,随机开始一个标题从播放列表,但当我重新加入主菜单场景的音乐游戏对象所在的地方,另一首歌曲开始播放(2首歌正在播放),但我希望只播放一首歌,第一首歌。当我重新加入主菜单场景时,我看到另一个音乐对象在那里创建。
下面是我代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MusicRandom : MonoBehaviour
{
    [SerializeField] AudioClip[] myAudioClips;
    AudioSource audioSource;

    void Start() 
    {
        DontDestroyOnLoad(gameObject);
        audioSource = gameObject.GetComponent<AudioSource> ();
    }

    AudioClip RandomClip() 
    {
        int randomNumber = Random.Range(0,myAudioClips.Length);
        AudioClip randomClip = myAudioClips[randomNumber];
        return randomClip;
    }

    void Update() 
    {
        if (!audioSource.isPlaying) {
            audioSource.clip = RandomClip();
            audioSource.Play();
        }
    }
}

我尝试添加一个值来启动“audioSource = gameObject.GetComponent();“功能只有一次,但它不工作。

zf9nrax1

zf9nrax11#

我发现了一种方法,游戏对象不重复

private static GameObject instance;
 void Start() 
 {
 DontDestroyOnLoad(gameObject);
 if (instance == null)
     instance = gameObject;
 else
     Destroy(gameObject);
 }

相关问题