C# 如何判断是否已经播放了合作节目?
如果一个物体上的alpha是黑色的,我想玩一个合作程序,如果alpha是白色的,我想玩另一个合作程序。这将从公共空间中调用 所以基本上我有一个对象,当点击它时,它会淡出一些东西。现在,当单击另一个对象时,我希望该对象淡出,但前提是它已经淡入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
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;}那样再次发生呢?我刚刚用一些代码更新了这个问题。代码示例是我正在尝试做的,但我不知道如何正确地编写它。