如何从另一个脚本调用协程?

时间:2019-04-27 16:12:39

标签: unity3d

我一直在尝试在另一个对象上启动另一个协程。

在主对象(Berserker)上,我需要在名为BerserkerHit的小对象上调用协程。它是狂战士的父母。

我尝试过

StartCoroutine(BerserkerHit.main.GetComponent<meshTimer>().Counter());

这行不通,因为第一个空格只包含脚本。

所以我尝试了

StartCoroutine(BerserkerHitbox.main.GetComponent<meshTimer>().Counter()); 

哪个是脚本。然后它说它没有main的定义。我删除了main,整个东西开始抛出一个错误。修复?

2 个答案:

答案 0 :(得分:0)

在使用协程之前,您需要了解如何调用协程。 https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html StartCoroutine接受方法和带有方法名称的字符串。首先是BerserkerHit和BerserkerHitbox C#类脚本吗?主要是什么? (我不确定在Unity中是否有东西。我唯一能记住的是返回主摄像机的Camera.main。)

在我理解之前,您的代码中缺少一些内容。 也。 GetComponent()

meshTimer应该是c#类脚本(应该是MeshTimer)。

最后,您调用那个MeshTimer类的方法...但是,如果这样调用它,它应该是静态方法(我认为不可能将静态方法称为协程)。

尝试至少添加您的Counter方法代码并添加有关您的类的更多信息。

答案 1 :(得分:0)

您可以调用一个函数,然后在该函数中启动协程。

即,在脚本中您要从以下位置调用协程: Class.methodname();

在该方法内部: StartCoroutine(methodname());