ClayByrne 2024-01-09 06:29 采纳率: 71.4%
浏览 82
已结题

ue5循环无法顺利执行

最近在试着使用unreal制作类似galgame的游戏,其中我想实现一个这样的功能:让文字像打字机效果那样一个一个跳出来。
基于网络上的教程,我使用蓝图编辑了如下逻辑:

img

dialogue logic 内部逻辑(左):

img


内部逻辑(右):

img

大致思路就是利用计时器的循环一个一个打印出文字。
但现在的问题是:我在运行时发现程序只会打出第一个文字,然后就什么都没有了。
我进行了断点调试,并在屏幕上试图打印出index,最后发现断点只会击中几次,而index也只有最开始的0,并不会继续往下运行循环。
所以目前推测的可能是:循环并没有被执行,只是运行了一次这个函数后就停止了。
而我在set timer by function name里的确勾选了loop:

img

虽然自己写一个循环也不是不可以,但我还是想知道,为什么这种方式的循环无法运行?究竟是哪里出了什么问题?该如何解决问题让它继续顺利运行下去?
我自己会用chatGPT,它说的我都排查过了,如果能解决我的问题我就不会来这里提问了。希望有人可以从我给出的代码里帮我分析一下究竟出了什么问题,如果信息不够可以跟我说,我可以追加其它代码。

  • 写回答

16条回答 默认 最新

  • 进哥聊编程 新星创作者: 编程框架技术领域 2024-01-11 10:43
    关注
    获得0.80元问题酬金

    从你提供的蓝图逻辑来看,循环的问题可能是由于计时器的设置有误导致的。在你的截图中,你在设置计时器时选择了使用"Function"来设置计时器,这将导致计时器只执行一次,而不是循环执行。

    要解决这个问题,你可以选择使用"Event"来设置计时器。具体步骤如下:

    1. 在蓝图编辑器中,打开你的Dialogue Logic蓝图。
    2. 删除原来的Set Timer By Function Name节点。
    3. 拖动一个"Delay"节点到蓝图中,并将其和"Print Text"节点连接起来。
    4. 将"Delay"节点的时间设置为你想要的文字打印速度。如果你想要每个文字之间有一定的间隔,可以将时间设置为打印一个文字所需的时间。
    5. 将Delay节点的"Completed"输出连接到自己的"Delay"节点输入。
    6. 现在,你的循环效果应该已经生效了。

    通过这种方式设置计时器,每次计时器完成后将自动触发下一个计时器。这样,你就可以实现文字一个一个地打印出来的效果了。

    如果你还想要控制文字的显示速度,可以在每个循环打印文字之前添加一个延迟节点。调整延迟节点的时间来控制文字的显示速度。

    希望这能帮助到你解决问题!如果你还有其他疑问,请随时提问。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 修改了问题 1月10日
  • 创建了问题 1月9日