首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在开始新的音频剪辑之前取消音频剪辑?

是否在开始新的音频剪辑之前取消音频剪辑?
EN

Stack Overflow用户
提问于 2016-01-03 05:35:42
回答 1查看 40关注 0票数 2

我几乎有一个可以工作的收音机,玩家可以走到它跟前,按下一个按钮,循环播放歌曲。一切正常,除了每次按下按钮都会播放新歌,但原曲将在它下面继续播放。每播放一首新歌,就会创建一个新的对象,但它们都被称为“One Shot”,所以我不知道如何销毁它们。如果我可以修复这个bug,那么对于任何想要使用它的人来说,这应该是一个有用的无线电脚本。更新,这是我修改过的无线电代码,现在正在工作,得到以下答案的帮助:

代码语言:javascript
复制
 void OnTriggerEnter2D(Collider2D target) {
            if (target.gameObject.tag == "radio") {
                radioEnter = true;
            }
    }

    void OnTriggerExit2D(Collider2D target) {
            if (target.gameObject.tag == "radio") {
                radioEnter = false;
            }
    }

   public void radioUse(){
        if ((Input.GetKeyDown (KeyCode.M)) && song3on == true && radioEnter == true) {
            TurnOn ();
            song1on = true;
            song2on = false;
            song3on = false;
        }
        else if ((Input.GetKeyDown (KeyCode.M)) && song1on == true && radioEnter == true) {
            TurnOff ();
            song1on = false;
            song2on = true;
            song3on = false;
            TurnOn();
        }
        else if ((Input.GetKeyDown (KeyCode.M)) && song2on == true && radioEnter == true) {
            TurnOff ();
            song1on = false;
            song2on = false;
            song3on = true;
            TurnOn ();
        }
    }

    public void Update() {
        raidoUse();
    }
EN

回答 1

Stack Overflow用户

发布于 2016-01-03 06:03:39

由于PlayClipAtPoint不会返回AudioSource来管理,因此您不应该将其用于此类声音。我建议在一个阵列中设置一个AudioSource和多个AudioClips。只需将您想要的剪辑拖到检查器中,然后使用公共方法来控制收音机。这样你就可以在不同的歌曲中重复使用它。

以下代码未经过测试。

代码语言:javascript
复制
Public class Radio : MonoBehaviour
{
    AudioSource output;
    public AudioClip[] songs;
    int songIndex = 0;

    void Start(){
        output = gameObject.AddComponent<AudioSource>();
    }

    public void ToggleSong(){
        songIndex++;
        output.clip = songs[songIndex % songs.Length];
        output.Play();
    }

    public void TurnOn(){
        ToggleSong();
    }

    public void TurnOff(){
        output.Stop();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34570971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档