首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他脚本停止协程,而不是调用

从其他脚本停止协程,而不是调用
EN

Stack Overflow用户
提问于 2019-06-11 19:37:27
回答 1查看 93关注 0票数 0

当播放器触发触发器时,我需要停止在另一个脚本中运行的协程。触发器起作用了,但是协程不会停止。

下面是运行协程的脚本:

代码语言:javascript
复制
 public AudioSource direction;

public IEnumerator audioPlayCoroutine;

public bool running = false;

IEnumerator AudioPlay()
{
    while (true)
    {
        direction.Play();

        yield return new WaitForSeconds(2);
    }

}

void OnTriggerEnter(Collider col)
{
    if (col.gameObject.CompareTag("Player"))
    {

        if (running == false)
        {
            audioPlayCoroutine = AudioPlay();

            StartCoroutine(audioPlayCoroutine);

            Debug.Log("Started");

            running = true;
        }

        else if (running == true)
        {
            Debug.Log("Void");
        }

    }           

}

这是停止协程运行的脚本。

代码语言:javascript
复制
public GameObject lastTrigger;

void OnTriggerEnter(Collider col)
{
    if (col.gameObject.CompareTag("Player"))
    {

        Debug.Log("Triggered");

        if (lastTrigger.GetComponent<MazeAudioLoop>().running == true)
        {

            lastTrigger.GetComponent<MazeAudioLoop>().running = false;

            Debug.Log("Running: false");

            StopCoroutine(lastTrigger.GetComponent<MazeAudioLoop>().audioPlayCoroutine);

        }
    }
}

触发的调试显示,但是协程不会停止。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 20:32:20

您需要在运行协程的组件上调用StopCoroutine。

代码语言:javascript
复制
  StopCoroutine(lastTrigger.GetComponent<MazeAudioLoop>().audioPlayCoroutine);

这意味着当前组件将要停止它不支持的协程。

相反,您可以创建一个简单的方法来停止协程:

代码语言:javascript
复制
MazeAudioLoop mal = lastTrigger.GetComponent<MazeAudioLoop>();
if (mal.running == true)
{
     mal.running = false
     mal.StopAudio();
      // or this => mal.StopCoroutine(mal.audioPlayCoroutine);
}

MazeAudioLoop.cs有:

代码语言:javascript
复制
public void StopAudio()
{
     if(audioPlayCoroutine == null) { return; }
     StopCoroutine(audioPlayCoroutine);
     audioPlayCoroutine = null;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56542831

复制
相关文章

相似问题

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