在代码中删除组件很简单,只要DestroyComponent()
函数就可以了,使用之前注意引入组件对应类的头文件。
但是遇到一个问题,在细节上犯了个小错误,导致引擎立马奔溃。
问题重现:
1、首先,创建了一个mesh组件。命名伟WeaponMesh01。
2、然后经过了一堆逻辑后,特定条件下,需要删除此组件,于是DestroyComponent了。
3、又在一个特殊的情况下,需要重新再创建mesh组件,于是就CreateDefauSubobject了
4、引擎就奔溃了。
问题原因:一开始,两次创建的组件名称一样,图中划线处,都叫WeaponMesh01
。虽然前一个组件已经DestroyComponent,但只是被引擎标记为将来删除,至于什么时候真的被垃圾回收走不一定,所以当创建第二个mesh的时候,命名冲突,不留余地,立马奔溃。
教训:下次再有这种增删组件的时候,一定要注意区别命名,尤其是复制的代码。