首页 > 其他分享 >UE4蓝图导致编辑器崩溃(抢救蓝图)

UE4蓝图导致编辑器崩溃(抢救蓝图)

时间:2023-01-11 10:12:17浏览次数:35  
标签:None False Script 蓝图 编辑器 UE4 PinType Class

环境:

引擎版本:ue4.27.2   

IDE:JetBrains Rider 2022.2.3+vs2022   

蓝图目标:用户控件蓝图

起因

修改了结构体的字段的类型从uint8->int,就为了省那三个字节的内存,后面发现类型转化上需要转几次,有那省的三字节内存,还不如节约类型转换的性能,然后就修改为int类型,典型的丢西瓜捡芝麻。

结果

蓝图引用了C++的哪个被修改的结构体,并对这个结构体进行操作,编辑器热编译不能让蓝图的字段类型刷新,我就重启了ue4,然后就不能点击哪个蓝图了,点击了就崩溃。

抢救过程

1.首先开启调试模式,强开蓝图。点击蓝图后脚本编辑器会跳到引擎内部去,这个时候就不要管跳那去了,直接一直点继续,直到没有出现继续为止(十次左右)。

2.这个时候会出现一个弹窗,告诉你蓝图里有变量有变量有问题问你要不要删除,这个时候点不删除,进入蓝图。

3.新建一个蓝图,把奔溃蓝图的ui全复制过去

4.蓝图连线部分先拷贝到一个文件夹里,拷贝蓝图的主要连线和方法就可以了,我这边变量就有问题所以不复制。有多个蓝图都使用了哪个结构体,所以我这边用同样的方法处理了几个蓝图。蓝图的所有节点看起来是一个对象被序列化的产物(以下是我随便拷贝的两小段),每一个小段都有“Object Class=/Script/Blueprintxxx”,从这里看出来是对象序列化的产物。

Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_0"
   EventReference=(MemberParent=Class'"/Script/UMG.UserWidget"',MemberName="PreConstruct")
   bOverrideFunction=True
   NodePosX=880
   NodePosY=80
   EnabledState=Disabled
   bCommentBubblePinned=True
   bCommentBubbleVisible=True
   NodeComment="此节点被禁用,将不会被调用。\n从引脚连出引线来编译功能。"
   NodeGuid=6753599544B7CA35D56B54AADCA1A5BA
   CustomProperties Pin (PinId=B19CDCEE460DC57AC4F552BEB81D7CEC,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/UMG.UserWidget"',MemberName="PreConstruct"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=018B00464B446ADAA528E3A79CE7BFB2,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=1C64CD024C5EC9AD6FCD9AB1580BBCCE,PinName="IsDesignTime",PinToolTip="Is Design Time\n布尔",Direction="EGPD_Output",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,DefaultValue="false",AutogeneratedDefaultValue="false",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/BlueprintGraph.K2Node_Event Name="K2Node_Event_1"
   EventReference=(MemberParent=Class'"/Script/UMG.UserWidget"',MemberName="Construct")
   bOverrideFunction=True
   NodePosX=1024
   NodePosY=656
   bCommentBubblePinned=True
   NodeGuid=A4FE884E4A8AA8F2CA5B8AA37D155EB4
   CustomProperties Pin (PinId=9AE76AF44ED292266CD717AB0AEB52E7,PinName="OutputDelegate",Direction="EGPD_Output",PinType.PinCategory="delegate",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(MemberParent=Class'"/Script/UMG.UserWidget"',MemberName="Construct"),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=EE00014B4994BCAF1414668C31A17DB6,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,LinkedTo=(K2Node_CallFunction_0 156EBA694C869ED7294CEAAEAA7DE716,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object

5.关闭调试之前,保存创建的替代蓝图,新建的蓝图只有ui样式,没有连线是可以编译的,然后删掉有问题的蓝图。

6.然后开启非调试编辑器,在新建一个蓝图把刚刚复制的蓝图全拷贝过去,大部分节点是可以正常显示的,这个时候就一点一点的拷贝进替代蓝图里,不能莽的全拷贝进替代蓝图,会告诉你有变量有问题(引用了有问题的变量),会导致编译不了。

7.这个时候就可以使用修改过后的类型来修复蓝图了,只是这个修复的代价有点高

按照这个流程就可以完美修复了,第一次遇到蓝图导致奔溃的问题,刚开始修复蓝图还删了一些节点,想强行续命,结果徒劳罢了,太多节点有问题了,走了一点小弯道。

遇到这种问题,首先不能关闭编辑器,关了就挂,需要想办法让蓝图识别出你修改的字段类型,只能后面遇到了在琢磨了,最好是别遇到,浪费时间。

C++奔溃:代码编译不过,代码运行时有错误(空指针常见)

蓝图崩溃:引用了被修改的字段(目前能得出的结论是字段占用内存不一样会导致出问题,加字段没有问题,删字段(目标字段不能被引用,要及时刷新节点))

标签:None,False,Script,蓝图,编辑器,UE4,PinType,Class
From: https://www.cnblogs.com/zjr0/p/17042943.html

相关文章

  • Notepad--国产开源编辑器,横空出世!
    今天推荐的这款开源文本编辑器呢,就是国内大佬写的类似Notepad++的文本编辑器—Notepad--!大佬说:鉴于Notepad++作者的错误言论,Notepad--的意义在于:减少一点错误言论,减少一点自......
  • 代码编辑器插件 codemirror 和 monaco-editor 的使用
    codemirrorcodemirror官方文档vue-codemirror官方文档vue-codemirror官方examples因为是本项目是vue2所以先记录vue2中的使用安装4.0.6配合vue2npminsta......
  • SiteFactory编辑器支持Word文档
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • SiteFactory编辑器支持Word导入
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复......
  • SiteFactory编辑器支持Word上传
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action......
  • SiteFactory编辑器支持Word一键粘贴
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.j......
  • SiteFactory编辑器支持Word一键上传
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java"......
  • SpringBoot整合ueditor编辑器
    1.到ueditor编辑器官网下载jsp版(目前官网地址改为了GitHub)​​https://ueditor.baidu.com/website/download.html​​2.下载解压后复制到当前项目3.导入maven依赖<de......
  • SiteFactory编辑器支持Word一键导入
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......
  • SpringBoot整合ueditor编辑器
    1.到ueditor编辑器官网下载jsp版(目前官网地址改为了GitHub)​​https://ueditor.baidu.com/website/download.html​​2.下载解压后复制到当前项目3.导入maven依赖<dependenc......