HOTween OnComplete(MyFunction)没有被触发

时间:2019-01-16 09:43:44

标签: c# unity3d

我有此代码:

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");
}

但是我觉得有更好的更清洁的解决方案。

2 个答案:

答案 0 :(得分:2)

我还没有使用过HOTween,但是从文档来看,它似乎正在寻找具有不同签名的函数。

致电时

.OnComplete(TriggerFunction)

可能正在寻找没有参数的回调函数    私有void TriggerFunction()

如果您要打电话     .OnComplete(TriggerFunction,1,2,3) 那么您可以将函数与单个参数一起使用   私有void TriggerFunction(TweenEvent数据)

答案 1 :(得分:0)

在阅读注释线程后,我认为与HOTween捆绑在一起的资产OP正在使用,其问题必须阻止OnComplete回调。

  

好像我使用的是过时的HOTween版本   与我正在使用的另一个软件包。更新后一切正常   像魅力一样。

由于我已从资产商店在Unity2018.2中导入HOTween,并测试了OnComplete回调仍然有效,因此问题出在OP使用的HOTween插件已过时/已修改。