首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UE4:添加C++类时出错- ClassName.generated.h -不允许对生成的代码进行更改

UE4是指虚幻引擎4(Unreal Engine 4),是一款由Epic Games开发的跨平台游戏引擎。它提供了丰富的工具和功能,用于开发高质量的游戏、虚拟现实(VR)应用程序和其他交互式体验。

在UE4中,当尝试添加一个C++类时出现了错误"ClassName.generated.h -不允许对生成的代码进行更改"。这个错误通常是由于对自动生成的代码进行了手动修改导致的。

在UE4中,生成的代码是由引擎自动生成的,用于处理类的元数据和反射等功能。这些生成的代码位于以.generated.h为后缀的文件中,例如ClassName.generated.h。这些文件应该由引擎自动管理,不应手动修改。

解决这个问题的方法是,避免对生成的代码进行手动修改。如果需要添加自定义的功能或修改类的行为,应该在自己的C++类文件中进行修改,而不是在生成的代码文件中进行修改。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 3D游戏开发之在UE4中创建非玩家角色(NPC)

    在这个游戏中,当我们靠近NPC,它们会做出相应反应。 一 创建C++ 1) 在UE编辑器中,打开文件-新建C++,选择从Character(角色)继承,然后命名子类为NPC。...打开NPC.h文件: 添加头文件:(注意包含头文件必须在#include "NPC.generated.h"这一行前面加) #include "UObjectGlobals.h" 在原来代码基础上添加如下代码...因为UE4FString等内置类型保证了跨平台功能。 3) 重新编译UE4项目。 二 创建蓝图 1) 在内容浏览器,右击NPC,然后从这里创建一个蓝图。...这是从我们C++代码中创建属性并且可以在蓝图中应用。在UPROPERTY()函数里面添加了一个NpcMessage字符串变量,并且指定了在蓝图中可读写,所以在细节面板中可以进行编辑了。 ?...创建HUD子类 1) 点击文件-新建C++;(简单步骤我们就不再截图了,相信大家也都知道怎么操作了) 2) 选择从HUD继承来创建我们自己; 3) 给你命名,在我这里命名为MyHUD。

    2.4K80

    【技术总结】UE4Subsystem

    在Subsystem出现之前黑暗时代 我们往往需要一个全局,生命周期是在整个游戏进行过程中一直存在单例,而如果你想要在UE4里面实现一个单例,那么你需要使用以下代码: UCLASS() class...(又一个不让新人碰C++只让写Lua原因),UE4实现比较难看懂,而且容易出错。...但是即便是这样也需要手动为每一个单例写一遍,很容易出错,也不容易维护。 总而言之,不管是什么样实现方法,UE4客户端开发都得要自己管理好自己写单例生命周期,心智负担极大。...(另,FSubsystemCollectionBase继承了FGCObject,不然F开头C++无法访问/管理U开头UE4,如果感兴趣的话可以看一下相关资料,这里不赘述)。...还记得我们提到过FSubsystemCollectionBase继承了FGCObject,所以F开头C++可以引用U开头UE4型对象,从而能够让UE4GC系统管理引用对象吗?

    5.6K71

    UE4学习笔记(四): 开发体验

    官方WIKI上面有个FPS C++ Tutorial, 照着做一遍可以很好地了解UE4开发方方面面 这里只是记录一下自己收获 GameMode/Config/Character 从这个可以看出UE系列游戏底层功能还是有一个不错框架...当然, 这样减少了上手难度 C++运行时编译加载 实际用下来感觉还没做到位, 因为只限于不改变属性和函数代码修改 一旦增加属性/函数, 必须重启Editor 另外, C++编译速度还是慢, 大型项目的话..., 这个特性估计实用性会大大降低 C++ Reflection 在UE4C++中会加一些宏关键字, 跟Qt做法差不多, 编译通过工具解析生成一些额外代码 看一下生成那些代码, 明显跟UE3...UnrealScript生成差不多....每次导入完成后可以用, 但是如果没保存的话(跟工程保存是分开), 下次打开会出错, 算是不太人性化地方 每一个资产在代码中引用时有个奇怪路径...好在可以直接在Editor中拷贝这个路径 输入响应

    80360

    在Lua中实现UE4 C++代码自动补全

    同时Lua开发效率优势也使得越来越多UE4游戏项目组使用Lua + C++来作为开发语言。...我们项目接入是slua-unreal,可以提供UE4进行Lua开发基础支持。 不过,如何能够保证在UE4进行Lua开发效率?Lua能够像C++或者C#一样支持代码补全和跳转吗?...UE4原生语言是C++C++这货也有反射? 答案是:可以!! UE4一大迷人之处,就是支持反射。一系列特性都是基于它自带反射机制。简单来说,UE4反射系统,是针对UObject。...通过在定义变量打标签(UPROPERTY、UFUNCTION等),UE4会通过UHT来静态扫描代码,从而生成.generated.h和.gen.cpp文件,并通过static构造方式,使得生成文件在...于是最终流程为: 将UE4反射信息生成.json文件。 用python.json文件中数据进行一层加工(为了简化模板代码逻辑) 按照加工后数据格式,写模板代码。 调用模板引擎生成代码

    6.3K32

    ue4 插件开发(ue4性能优化)

    第三方库引入 牛刀小试 创建Actor到视图插件 插件打包 插件发布 常见问题 插件项目案例 UE4插件扫盲 UE4插件是什么 UE4引擎和UE4项目是由各个模块组成,其主要编程语言是C++。...文件:插件项目配置文件,JSON格式 .Build.cs文件:每个 .build.cs 文件声明派生自 ModuleRules 基,并设置属性控制器从构造函数进行编译方式。...当程序关闭或主动调用ShutdownModule函数,模块将被卸载。 四种常用模式插件模板 Blank 空白模板,最简洁结构,只有模块和加载卸载函数,一张白纸最好作画了。...之后就可以在你代码中#include 第三方(.h)文件,使用其中功能了。 牛刀小试 创建Actor到视图插件 新建UE4 C++项目。 在UE4编辑器菜单栏Edit中打开Plugins。...插件编译版本 用户使用插件UE4版本需要与插件编译UE4版本一致,不然会警告提示版本不一致而丢失插件。 所以发布插件要注明插件所支持UE4版本号。

    3.3K21

    浅谈UE4引擎

    为此,《智慧产品圈》专门对Unity3D和Unreal Engine 4(以下简称UE4)这两款主流引擎进行分析比较,希望给读者带来两款引擎进一步了解。 两者优缺点对比如下: ?...这对于绝大部分习惯于C++游戏引擎工程师来说,使用自己热爱C++语言来工作,绝对是一件天大喜事啊。    2)UE4是开源。开源就是代码是完全开放,为什么开源如此重要?...一方面是因为只有我们看到源代码实现细节,当出错了我们才能快速准确地判断出错成因,节省被错误折腾时间。(你想想像Unity3D这种闭源引擎,要是出错了,你是完全看不到为什么会发生错误。...4)UE4是免费,游戏引擎代码可以从Github开源社区下载,这意味着开发者游戏引擎有着控制权,你可以修改任何东西,包括物流引擎,渲染和图像用户界面。    ...通常,如果你想游戏代码进行一些修改,你必须要停止游戏才能进行修改,然后再次运行看看修改后游戏效果。然而,使用热更新功能,你可以修改游戏而不需要停止或暂停游戏。

    4.7K81

    UE4网络模块解析(一)

    在该种模式,一个重要特征就是各个客户端不信任,需要中央服务器进行各方面验证。 3.Listen Server & Dedicated Server。...比如说,在射击游戏中,客户端游戏玩家开火射击,该操作被传到服务端进行处理如验证是否还有子弹等,由于网络有延时,为确保玩家游戏体验流畅性,会在本地直接进行虚拟开火动画,这就是操作本地玩家;相应地,在服务端处理完成后...在C++中,1.属性前增加UPROPERTY(Replicated),2..cpp文件中,在GetLifetimeReplicatedProps函数中添加:DOREPLIFETIME(名称,变量名)。...其中,代码头部需要添加include “Net/UnrealNetwork.h” RepNOTIFY: 复制通知:如果一个变量设置为Rep_Notify,当该变量发生复制,服务端和收到该值客户端都可以调用一个自定义函数...注意C++版本略有区别,仅在客户端调用函数。他设置方法在蓝图中:设置为RepNotify即自动生成

    63430

    高效使用lua作为业务开发语言秘诀在这里!

    3)对于非蓝图和非蓝图方法,支持基于静态代码生成自动导出 和 基于模板展开手动添加 在实际项目中,我们有很多代码并非是蓝图,但也需要在lua中使用,比如最常见FVector,这个并不是蓝图...c++,并生成对应静态代码,这个工具是基于libclang,它使用libclang产生反射信息来完成代码生成,这点上类似Unity版slua,最终生成代码如下: ?...可以看到slua将FVector成员方法都导出了,整体代码风格与slua unity版本类似。 除了支持静态代码生成导出,也支持基于可变参数模板导出,这需要手动添加简单导出代码,例如: ?...slua会基于可变参数模板自动展开代码,产生正确参数解析和函数返回值,生成对应导出函数,不需要对原始c++做任何注入式修改。...7)通过静态代码生成,导出了UE4所有的enum,并使用int支持enum参数 8)支持扩展方法 类似c#extension method,slua unreal也支持扩展方法,什么是扩展方法呢?

    3.8K31

    ue4 弱指针_智能指针如何实现自动释放

    文章里面的代码下载链接:智能指针测试代码 共享指针/共享引用/弱指针/注意事项 一.TSharePtr 1.如何创建一个TSharePtr 2.TSharePtr如何进行类型转换 1)TSharePtr...比如如下代码 AsShared使用案例 //如何使用继承自TSharedFromThis void MySharedFromThisTest(); //如何使用继承自TSharedFromThis...1>比如我们要写一个单例管理,可以将数据上继承自这个 2>有转换成原生需求,又想在某一处将原生C++再次转换成TSharedPtr需求 3.使用注意事项 1>错误用法, 也能这么用,...UObject一起混合使用 2>切记不能用UPROPERTY这些反射修饰符来修饰这些智能指针变量 3>切记TSharedRef变量是不允许定义在头文件里面作为成员变量出现 4>以下四个C++...static_cast dynamic_cast const_cast reinterpret_cast 5>在UE4里面还是使用UE4智能指针,就别用C++11了,因为UE智能指针能和UE代码比如一些容器能够方便使用

    1.1K30

    UE4

    虚幻反射系统 UCLASS()——用于告诉虚幻为生成反射数据。必须派生自UObject。 USTRUCT()——用于告诉虚幻为结构体生成反射数据。...GENERATED_BODY()——UE4将这个标记替换为将为该类型生成所有必要样板代码。 UPROPERTY()——支持将UCLASS成员变量或USTRUCT用作UPROPERTY。...编辑器(Editor) 为了能够在虚幻编辑器中打开项目并看到反映出来所有代码更改,项目必须以 编辑器(Editor) 配置构建。...它将解析 C++ 头中引擎相关元数据,并生成自定义代码,以实现诸多 UObject 相关功能。 UnrealBuildTool(UBT)被调用,以便结果进行编译。...BindRaw() 绑定到一个原始C++指针全局函数代理上。原始指针不使用任何引用,所以如果从代理底层删除了该对象,那么调用它可能是不安全。因此,当调用Execute()一定要小心!

    3.4K62

    UnrealEngine4 源码剖析 (一) UObject 概览及反射系统

    定义前半句即自省,而后半句即反射。使用 UE4 朋友应该大多数都是 C++ 开发者,但是如果大家使用过一些 C++ 之外现代语言,就会明白自省和反射重要性。...目前已知套路有两种: 手动注册类型信息 预编译器生成类型信息 手动注册类型信息就显得很简单粗暴了,这里有一个有名库,叫做 rttr,上一段代码,你就秒懂他原理了: #include <rttr/registration...另外,我也不能改一下定义又立马去比对差异然后把类型信息也加上吧。所以相比于上面这种原始而粗暴方法,预编译器 生成类型信息往往更得到大项目的青睐。...当然 UE4 使用也是预编译器生成类型信息方案,UE4 预编译叫 UHT (Unreal Header Tool),我们后面会做一期专题详细聊聊它。...UE4 类型数据结构统一继承自 UField,由于代码比较多,我们先看一下整体图: UField 上来第一眼,大家可能好奇是为什么 UField 要继承自 UObject,这里可以参考一下 Java

    3.2K10

    UnityUnreal 插件集成iOSAndroid 血泪总结

    当在 Unity 中编写 C# 代码,该代码首先被编译为.NET Intermediate Language (IL)。通过 IL2CPP,这些 IL 代码被转换为 C++ 代码。...这是因为 iOS 不允许应用程序加载外部动态链接库,所有的代码都必须链接到主执行文件中。...,但是,有时ProGuard可能会删除或更改应用中重要和方法,这可能会导致运行时错误。...^符号: R位置: 程序包 com.tencent.imur.survey.webviewR 是一个在 Android 开发中自动生成,它提供了项目 res(资源)目录中资源引用,每当你在...res 目录中添加一个新资源(例如,一个新布局 XML 文件、图片、字符串资源等),Android 构建系统会在 R 中为该资源生成一个新静态字段。

    2.7K63

    UE4 中通过单例实现全局数据管理

    初学者必知UE4新建关卡一些设置【虚幻引擎】。控件 UI 摆放如下图所示,一个蓝色按钮和一个红色按钮,下面对应是蓝色方和红色方比分。图片然后修改关卡蓝图,将 UMG 添加到视口。...图片二、C++ 代码新建 C++ ,注意需要打开 显示所有,继承自 Object 父,并将生成命名为 Singleton,如下图所示。...图片图片编辑源码如下,需要注意是由于反射机制, ue4构造函数没办法转为私有。...有两种方式,一种是 C++ 代码调用,另一种是蓝图调用。C++ 调用很简单,一行代码即可。...WikiUE4[C++]在虚幻引擎实现单例模式 - 知乎[UE4]线程锁FScopeLock用法_玄冬Wong博客-CSDN博客

    1.7K21

    游戏开发之UE4添加角色到场景中

    创建一个从Character继承 从基本框架继承是很简单: 1) 在项目中打开你UE4编辑器。 2) 在文件,选择“新建C++”。 ?...5) 最后点击创建来使用代码创建这个。 6) 然后UE4会自动运行你VS项目。我们在项目解决方案中打开Avatar.h文件: ?...定义好宏,UCLASS()宏使得你C++代码UE4编辑器中可用。...三 在运行时改变载入资源  载入网格通常情况下,如果使用C++代码来指定要载入资源,这是一种硬编码坏习惯。在运行程序时候,如果资源发生了改变,则程序不会做出改变。...3) 点击工具栏保存。 现在角色还不能被控制,我们下一节继续讲如何编写C++代码来控制角色。

    2.7K50

    UE4 反射系统详细剖析

    使用UE4同学一定"*.generated.h"这个名字不陌生。蓝图、HotReload等功能都依赖于反射机制。本文会从生成代码分析UE4反射系统是如何实现。...C++代码文件进行语法分析,识别出特殊宏,提取出对应数据。然后生成代码,在初始化时运行生成代码,将收集到数据保存。...UE4为每个生成了一个专门反射数据收集,以友元方式来访问信息。 根据行号,可以知道这是FMyStruct生成代码,也就是USTRUCT生成代码。...UE4反射信息机制了解,有助于我们UE4特化C++有更深认识。 笔者在项目中也通过UE4反射系统,搭配Emmylua语法,实现了Lua中UE4函数自动补全。...有兴趣同学可以参考这篇文章: 在Lua中实现UE4 C++代码自动补全 附录:展开生成代码 这里隐藏了所有#pragma warning代码。所有宏替换为了展开代码

    10.5K30

    虚幻引擎(UnReal Engine)环境

    引擎版本号要与后面下载源码版本一一应 MY PROJECTS就是你项目了 二、下载源码 1、前往关联账户网站将github账户关联到UE4账户中,这样才能下载源码 2、前往UnrealEngine...Github库下载源码,注意要选择与引擎版本号一致源码 3、解压后按照步骤运行命令来初始化代码 4、打开UE4.xcworkspace,target先选择ShaderCompileWorker进行...新建项目有两种方式:蓝图和C++,分别对应就是视图操作和代码。...选择移动端项目,新建一个工程 c++代码在source文件夹里。...会有一个日志输出显示来展示部署到iOS设备上日志,但是运行之后日志确获取不到 如果我们要像正常调试iOS项目那样,则在Intermediate/ProjectFilesIOS/文件夹下有生成项目的

    1.7K30

    UE4智能指针 UObject相关

    在C#或Java中,当把对象置空,只要代码中没有任何一个地方引用着这个对象,虚拟机就知道了没有引用,但UE4代码主要是C++来编写,平常我们写普通指针UE4并没有能力知道是否为一个UObject引用...UObject其实并不是最上层UE4可能是觉得代码都写在UObject里太多了,看起来比较麻烦,所以就让UObject还继承着别的基,这样可以把不同代码写到不同里。...如果在定义就知道类型,就也可以使用TWeakObjectPtr,他们底层是完全一样C++模板中类型信息是编译保存到,并不会在运行时带来额外性能开销。...,但是会有_1,_2这样后缀,当然这个名字也可以自己在NewObject时候指定,UE4也提供了MakeUniqueObjectName函数生成类似UE4这种带后缀名字辅助函数。...当然如果对象还没加载,还可以根据需要同步加载,这个也提供了接口。 如果需要其他方式加载,比如异步加载,还可以转换成FSoftObjectPath进行操作。

    3.2K30
    领券