最近在做一个小项目,本身觉得逻辑不复杂,直接用BP就可以完成核心逻辑。至于其他边边角角,应该都不是什么大问题,也就是文件读写等等,在BP里完成不了的东西就直接在C++代码里完成,好在项目比较小,怎么写都是自己定义。
就在期待的曙光将要出现的时候乌云滚滚的压住了那黎明的光线,直接将我送到了18层地狱以下。
具体是这样:因为主角几乎没有逻辑,只是几个简单的操作,我这里就放过去了,将游戏的主要逻辑都整到了GameMode里,在增加了新的功能和物件之后,BP终于不堪重负的打包失败了。之前也出现过类似的情况,但是没有说一宿一个包都没打出来过。做了深刻的检讨之后,决定将GameMode中的部分逻辑拿出来,整到几个SceneComponent中,于是灾难的崩溃开始了。写好了N多函数之后发现无法挂接,一旦加入到GameMode中,项目就打不开。
下面说目前的思路:情况出现后,意识中就一个想法,可能是交叉调用导致的,于是新建了一个SceneComponent做实验,发现没有问题。于是将所有函数全部删除干净,看挂接后是否OK,结果依然很精彩。直到我在新的Component中做实验才发现端倪。也就是SceneComponent中可以使用Actor作为成员变量,但是不能使用Actor数组作为成员变量。也不知道是为啥。
目前也没啥具体原因的说明,至少项目的进度必须要赶,后续还会有跟有趣的东西等着我。或许又是一个不眠的夜晚,先分离逻辑,至少验证过后,再说其他,先写这些。分离成功后,会有更多的东西写进来
=========================================================我是分割线==============================================================
再次编辑一个新的SceneComponent,发现删除掉其中自定义的枚举值之后,项目打开成功,有这个枚举值的时候打开是崩溃的。初步推测,SceneComponent中,尽量不使用自定义变量类型,如果必须使用的时候,注意:自定义会崩溃,使用需谨慎
=========================================================再分割==================================================================
回到原点,BP中不能在同一个类中使用太多的函数、事件等等这些东西,上限是多少完全未知,忠告就是:不要在同一个BP中定义太多的函数和事件,要不然痛苦的逻辑会让人不愿意面对明天的人生……