【虚幻】虚幻引擎Bug集锦

转载请注明出处: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还是复制前的那个,改了也没用,必须删除“创建文字命名”,再重新建一个才行。

  此外还有一种情况,就是黑板键最后有空格,也隐藏得很隐蔽,但是复制粘贴就可以,当然最好是不要有空格。

 

 

 

 5.子类对象的数据有时候会丢失

问题描述:

  假设做一个枪的基类,然后模型、装弹量、伤害、射击速度等属性都放到一个父类里,然后创建子类,修改子类的数据就可以创建不同的枪。

  但是,经常会遇到,重启项目后,所有对子类数据的设置都丢失,都变成父类默认状态的情况。

  随机出现,所有子类的数据都会丢失,没有任何规律。

解决办法:

  目前没找到规律,然后网上一搜,想不到啊想不到,这个Bug至少2016年就有了。。。。。

  然后仔细分析了文件的读写时间,发现蓝图的数据虽然被重置了,但是蓝图对应的具体文件的修改时间并没有改变。也就是说,文件其实没有改变,只是虚幻没有读取到正确的文件。

  然后在文件上鼠标右键,[资产操作]=>[重新加载],就可以重新从磁盘文件上加载数据,就会发现数据又回来了。

 

注意:

  这是一个极其严重的bug,官方6年没修复我也是看不懂(未来好像也没打算修复,说是无法复现),但是假设你有几十上百个武器子类,一夜间所有设置全部丢失,估计都不知道怎么哭的。

  所以这里建议两件事:

  一、一定要用git或svn做版本管理,以便于数据丢失后可以还原。

  二、对于武器、物品之类的数据型对象子类,要用数据表格(DataTable)做统一的数据管理,然后各自用自己的ID读取数据,从最大程度上避免数据丢失,也便于统一的管理。

  

 

 

6.可破坏网格体设置“碰撞已启用”无效

 

问题描述:

  如果先把可破坏网格体的碰撞禁用掉,然后在蓝图里启用的话,是启用不了的(可以禁用碰撞,反过来不行)。

解决办法:

  没法解决,就是虚幻的bug,官方也表示不会修复,所以只能自己换种思路去实现了,比如用静态网格体替换可破坏网格体,或者动态生成。

 

 7.物理资产满天飞

问题描述:

  某些情况下,物理资产会满天飞,约束之间会断开

解决办法:

  我说的这个当然不是某两个物理形体之间互相碰撞,但是又因为相邻而互相挤压导致的满天飞。

  解决办法就是把所有物理形体的碰撞已启用(注意看图的位置)改成已启用碰撞。

  

 

 

 

 

不得不承认,在稳定性上,Unity3D比虚幻高一个档次,Unity3D用了三年没遇到一个Bug,虚幻一年我竟然就要写一个Bug集锦,尤其是一些Bug甚至还是毁灭级别的。

未完待续

见一个写一个

posted @ 2021-10-28 15:27  静茹♂鱼  阅读(682)  评论(0编辑  收藏  举报