转载请注明出处:http://www.cnblogs.com/shamoyuu/p/ue_bugs.html
1. 行为树任务“延迟”节点卡死
问题描述:
如果在行为树的任务中有“延迟”节点,那一定要注意不能重复触发这个任务,否则重复执行2次延迟时,延迟后面的就永远不会执行,会一直卡在这个任务。
解决办法:
①可以在行为树的当前任务节点上,勾选“忽略重启自身”,这样可以避免这个任务未结束时再次进入这个任务。
②可以用“以事件设置定时器”来代替“延迟”,这样这个任务可以重复触发。
2.自定义行为树移动(转向)任务无法准确执行
问题描述:
自己写的MoveTo或者FaceTo任务,偶尔会出现卡住,不移动或者不旋转的现象。
解决办法:
如果自己写的任务被打断,虽然看似被打断,实际上AIMoveTo这样的节点还会继续执行(但是又不会移动),所以此时这个Pawn的位移和旋转还是会受到影响,所以需要在事件“Event Receive Abort AI”里结束AIMoveTo。
结束的办法就是在Abort事件里调用Controller的“停止移动”方法。
3.获取到的Montage播放长度是错误的
问题描述:
我的怪有4个攻击动画,每次攻击随机取一个攻击动画,然后获取这个动画的长度,然后以这个长度为时间,等待后结束攻击的任务,但是我发现获取到的montage的长度不太对,而且没有任何规律:
解决办法:
其实这不是bug,而是一个新手可能意识不到的问题,我的代码是下图这样的:
老手应该一看就知道问题出在哪了,没错,就是这个RANDOM,虽然看似它每次只执行一次,实际上会执行2次,“ZombieAttack”执行一次,然后到“获取播放长度”的时候再执行一次,然后各自处理各自随机出来的Montage,所以完全有可能随机出2个值来,也就是前面“ZombieAttack”和后面“获取播放长度”两个所调用的Montage完全没有关系。
所以这个只需要缓存一下RANDOM的montage,然后再分别去使用就好了。解决起来简单,但是这个问题还是要格外注意,不然就是一个隐形的问题,迟早出事。
4.黑板值设置异常
问题描述:
有时候复制黑板的“将值设置为XXX”的方法时,不能正常修改。
解决办法:
奇怪的缓存bug,读取到的KeyName还是复制前的那个,改了也没用,必须删除“创建文字命名”,再重新建一个才行。
此外还有一种情况,就是黑板键最后有空格,也隐藏得很隐蔽,但是复制粘贴就可以,当然最好是不要有空格。
未完待续
见一个写一个