【问题标题】:Unity animation from foreach loop c#来自 foreach 循环 c# 的 Unity 动画
【发布时间】:2019-04-04 05:01:54
【问题描述】:

我有一个 UI 文本,我在镜头外的脚本中更新它,然后使用动画让它在屏幕上滑动。该脚本使用 foreach 循环,因为文本更改和动画运行的次数是可变的。它总是跳过第三个动画(它会在控制台中打印效果,但不会播放该动画),即使调用了 4 或 5 个效果。

private Animation Anim;
public Text NBtext;
public GameObject NBEffect, Tut, TouchInput;

public IEnumerator NiceBowlingEffects(List<string> Effects, bool FirstFrame)
{
    Anim = GetComponent<Animation>();
    NBEffect.SetActive(true);
    yield return new WaitForSeconds(.2f); //give frame ect a chance to load.
    foreach (var Effect in Effects)
    {
        NBtext.text = Effect;
        Print(Effect);
        Anim.Play();
        yield return new WaitForSeconds(Anim.clip.length);
    }
    NBEffect.SetActive(false);
    if (FirstFrame)
    {
        Tut.SetActive(true);
    }
    TouchInput.SetActive(true);
}

【问题讨论】:

  • 你能放一段视频吗?想看看。
  • 当然可能需要我一分钟
  • 正在上传的视频应该会在大约 2 小时后在 youtu.be/NtnyoUQhUsQ 上播放...抱歉,我的连接速度很慢。前 2 帧不播放第三个效果的动画。
  • 如果把List中的动画用索引一一播放,都行吗?比如Effects[0].Play()...Effects[1].Play()......
  • 每次都是相同的动画,效果列表只是我用来在动画开始之前更新文本的字符串列表。

标签: c# unity3d foreach unity5


【解决方案1】:

尝试在 foreach 循环中将“WaitForSeconds”更改为“WaitForSecondsRealtime”,并告诉我是否修复了它

【讨论】:

  • 谢谢,我试过了,但没有任何改变。我将使用我在尝试在视频上捕获此错误时发现的一些新信息来编辑我的问题。基本上它只是跳过第三个动画,如果它有 4 个动画,它仍然会跳过第 3 个,然后像往常一样播放第 4 个..
【解决方案2】:

希望这对某人有所帮助,但为了最终让它为 Nice Bowling 工作,我不得不在更改文本和播放动画之间添加一个时间延迟。这是现在在 Nice Bowling 上运行的代码。

public IEnumerator NiceBowlingEffects(List<string> Effects, bool FirstFrame)
{
    Anim = GetComponent<Animation>();
    NBEffect.SetActive(true);
    yield return new WaitForSecondsRealtime(.1f); //give frame ect a chance to load.
    foreach (var Effect in Effects)
    {
        NBtext.text = Effect;
        yield return new WaitForSecondsRealtime(.1f); //text time to change
        Anim.Play();
        yield return new WaitForSecondsRealtime(Anim.clip.length +.01f);
    }
    NBEffect.SetActive(false);
    if (FirstFrame)
    {
        Tut.SetActive(true);
        Tut.GetComponent<UISprite>().Trigger();
    }
    TouchInput.SetActive(true);
}

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2016-02-19
    相关资源
    最近更新 更多