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的更新位置,这样才能调用脚本。
答案 0 :(得分:1)
简单地说......
如果您希望代码在组件启动时执行"然后在开始时调用它。
OR
如果希望代码在组件启动后执行每个帧,则在更新时调用它。
从这种方法的名称来看,我认为这是在枪实例化之后更新射弹位置的东西。 更新的位置可能是每帧操作。
我会把它放在更新方法中。
编辑:
除非......
此功能是否执行多帧动画?
Unity具有协同程序的概念,允许执行几个帧的某些操作。在这种情况下,你可能最好在你的start方法中做这样的事情......
StartCoroutine(ProjectileMotion)