我应该使用Start或Update来调用Unity3d中的给定方法

时间:2014-07-27 13:51:35

标签: unity3d

1.我有一个类,其中有一个名为ProjectileMotion()的方法,其返回类型为IEnumerator,此方法是从Start()调用的。 2.上述脚本附加到从另一个类实例化的预制件上。

问题:

在IENumerator ProjectileMotion()方法中,我需要更新一个持续移动的对象的位置,所以我声明了

//assigned the o=gameobject to it and it is moving continuously
Public Transform Target;    

在ProjectileMotion()中,如果我执行Target.transform,position,它只给出起始位置,而不是在实例化该脚本附加的预制件时的位置,但是,我能够得到Update方法中Target的更新位置(使用Debug.Log检查)。

但是我当然不能在Update方法中调用ProjectileMotion(),每次实例化预制件时都应该怎么做才能获得Target的更新位置,这样才能调用脚本。

1 个答案:

答案 0 :(得分:1)

简单地说......

如果您希望代码在组件启动时执行"然后在开始时调用它。

OR

如果希望代码在组件启动后执行每个帧,则在更新时调用它。

从这种方法的名称来看,我认为这是在枪实例化之后更新射弹位置的东西。 更新的位置可能是每帧操作。

我会把它放在更新方法中。

编辑:

除非......

此功能是否执行多帧动画?

Unity具有协同程序的概念,允许执行几个帧的某些操作。在这种情况下,你可能最好在你的start方法中做这样的事情......

StartCoroutine(ProjectileMotion)