我有这个代码:

void FunctionName( Vector3 pos, Vector3 targetPos){

    Vector3[] path = new Vector3[] {
       pos,
       new Vector3(targetPosition.x, ((directionDown) ? 100 : -300), 0),
       new Vector3(targetPosition.x, targetPosition.y + ( ( directionDown ) ? 300 : -500 ), 0)
    };

    Transform starEffect = starEffectObject.transform;
    starEffect.localPosition = pos;

    HOTween.To(starEffect,
               1.5f,
               new TweenParms()
                   .Prop(
                       "localPosition",
                       new PlugVector3Path(path, EaseType.Linear, true)
                   )
                   .OnComplete(TriggerFunction)
    );
}

private void TriggerFunction() {
    Debug.Log("asd");
}

我的问题是 OnComplete(TriggerFunction) 没有按照 HOTween documentation 中的指示触发

但是,如果我用 OnComplete(TriggerFunction) 替换 OnStart(TriggerFunction) ,一切正常。

有人可以帮我解决这个问题吗?或者请向我发送正确的方向,以获取在补间结束时触发 TriggerFunction 的替代解决方案。

谢谢!

更新:

我设法欺骗它:
StartCoroutine(TriggerFunction(0.2f));

IEnumerator TriggerFunction(float delay) {
    yield return new WaitForSeconds(delay);
    Debug.Log("asd");
}

但我觉得有一个更好的更清洁的解决方案来做到这一点。

最佳答案

阅读评论线程后,我相信 OP 正在使用的与 HOTween 捆绑在一起的 Assets 一定有其阻止 OnComplete 回调的问题。



由于我从 Assets 商店导入了 Unity2018.2 中的 HOTween 并测试了 OnComplete 回调仍然有效,所以问题是由于 OP 使用的过时/修改过的 HOTween 插件。

关于c# - HOTween OnComplete(MyFunction) 未被触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54214188/

10-11 17:12