是的,我真的被困在一个简单的协程上了。在我的Unity游戏中,我一直试图弄清楚如何在一个公共静态空白中使用这样的东西:
StartCoroutine(ExampleCoroutine())
我知道在一个public static void中没有办法使用这行代码,但是我正在尝试找到一个解决方法来做同样的事情。到目前为止,互联网并没有帮助我,但是我得到的最接近我的问题被解决的是关于创建一个示例的东西。我不理解它,因为我只是一个新手,但是它可能是一个线索,因为这是我在创建时得到的错误:
error CS0120: An object reference is required for the non-static field, method, or property 'MonoBehaviour.StartCoroutine(IEnumerator)'
协程启动的IEnumerator被标记为public static,如果这有帮助的话。谢谢你的时间和我的愚蠢
编辑:我被要求显示更多代码,所以我开始了!
public static void NeedsToBeAccessedElsewhere()
{
StartCoroutine(NeedsDeley());
//Do Stuff
}
public static IEnumerator NeedsDelay()
{
//results
}
1条答案
按热度按时间bvjxkvbb1#
一个协程总是需要一个
MonoBehaviour
的示例来负责执行它。因此StartCoroutine
不是一个static
而是一个示例方法,并且必须在MonoBehavior
的一个示例上被调用。因此,如果您的方法是
static
,则必须传入MonoBehaviour
引用,例如:或者,作为一种备用方法,您可以确保存在按需创建的默认行为
而且做了
但是,请注意,一般情况下:您注解了
// Do stuff
,但请记住调用.StartCoroutine
会立即终止,并且不会延迟调用它的方法。并使用它,例如