C# 如何判断是否已经播放了合作节目?

C# 如何判断是否已经播放了合作节目?,c#,unity3d,coroutine,C#,Unity3d,Coroutine,如果一个物体上的alpha是黑色的,我想玩一个合作程序,如果alpha是白色的,我想玩另一个合作程序。这将从公共空间中调用 所以基本上我有一个对象,当点击它时,它会淡出一些东西。现在,当单击另一个对象时,我希望该对象淡出,但前提是它已经淡入 public void fade() { if objectname.material.color = (1f, 1f, 1f, 0f); StartCoroutine(OPTION1()); if objectname.m

如果一个物体上的alpha是黑色的,我想玩一个合作程序,如果alpha是白色的,我想玩另一个合作程序。这将从公共空间中调用

所以基本上我有一个对象,当点击它时,它会淡出一些东西。现在,当单击另一个对象时,我希望该对象淡出,但前提是它已经淡入

 public void fade()

{
    if objectname.material.color = (1f, 1f, 1f, 0f);

    StartCoroutine(OPTION1());


    if objectname.material.color = (1f, 1f, 1f, 1f);

    StartCoroutine(OPTION2());

}

由于每个对象都是唯一的,而不是静态的,并且每个实例都是共享的,所以您可以添加一个属性来防止任何类型的递归或重复调用。。。内部设置标志并在完成时清除。。。差不多

private bool _isFading;

public void fade()
{
    // Is the fading already doing its thing?  If so, get out
    if( _isFading )
       return;
    // nope, not yet, first time in, set flag to prevent subsequent calls
    // against this same object
    _isFading = true;

    if objectname.material.color = (1f, 1f, 1f, 0f);
       StartCoroutine(OPTION1());

    if objectname.material.color = (1f, 1f, 1f, 1f);
       StartCoroutine(OPTION2());

    // reset now that the fading is complete
    _isFading = false;
}

为什么不在visual Studio中设置一个断点并进行调试?您可以添加您的代码和迄今为止尝试的内容吗?好的,介意给我们一个更具体的示例说明您正在尝试做什么吗?让一个协同程序根据颜色的alpha值做不同的事情似乎很简单,你只是想阻止它多次这样做吗?如果是这样的话,为什么不使用一个条件语句,确保它不会像ifran==false{ran=true;doCoroutinestuff;}那样再次发生呢?我刚刚用一些代码更新了这个问题。代码示例是我正在尝试做的,但我不知道如何正确地编写它。