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

为什么我不能创建一个在SpawnActor()函数中使用的TSubclassOf<>?

在UE4中,SpawnActor()函数用于在游戏中创建一个新的Actor实例。TSubclassOf<>是一个模板类,用于表示一个类的引用,而不是类的实例。因此,在SpawnActor()函数中使用TSubclassOf<>是不合适的。

SpawnActor()函数需要传入一个Actor类的引用作为参数,以告诉引擎要创建哪个类的实例。而TSubclassOf<>只是一个类的引用,不能直接用于创建实例。

正确的做法是,使用TSubclassOf<>来声明一个变量,然后在SpawnActor()函数中使用该变量来指定要创建的Actor类。具体步骤如下:

  1. 声明一个TSubclassOf<>类型的变量,例如:TSubclassOf<AActor> MyActorClass;
  2. 在需要创建Actor的地方,使用SpawnActor()函数,并将MyActorClass作为参数传入,例如:GetWorld()->SpawnActor<AActor>(MyActorClass, SpawnLocation, SpawnRotation);

这样,就可以根据需要动态地指定要创建的Actor类了。

关于SpawnActor()函数的更多信息,可以参考腾讯云游戏云产品中的文档:https://cloud.tencent.com/document/product/1162/40745

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

相关·内容

ue4动态加载模型(unity资源加载)

大家好,又见面了,是你们朋友全栈君。 需要注意几点: 1.调试环境下进行资源加载方式到打包出来后不一定能够使用。...TSubclassOf这种写法,可以蓝图中选择你这个指定类型蓝图类,比如下面例子就是继承自ASPPivotMeshActor蓝图类可以被选中 /** Pivot Actor bp calss...>通过构造加载方式1 如何非构造函数方式加载一个uasset(直接代码写中文以及中文图片命名方式习惯不好,不要学我) //静态方法, 加载uasset资源,比如UI贴图等。...2, 结合CreateAsset代码创建一个UMG蓝图 // 对于ScrollBox……等类似列表容器可先使用该种方式, 创建然后再做添加 UFUNCTION() UUserWidget* CreateFromAsset...加载一个蓝图类 UPROPERTY() TSubclassOf BP_1; //构造函数实现, 加载一个蓝图类 BP_1 = LoadClass(NULL

1.4K10

为什么创建一个不能被实例化

摄影:产品经理 感谢小何上等牛肉 当我们创建一个Python 类并初始化时,一般代码这样写: class People: def __init__(self, name): self.name...一个不能被初始化类,有什么用? 这就要引入我们今天讨论一种设计模式——混入(Mixins)。 Python 由于多继承原因,可能会出现钻石继承[1]又叫菱形继承。...('kingname', 28) pm = People('pm', 25) kingname > pm 显然,这样写会报错,因为两个类实例是不能比较大小: 但在现实生活,当我们说 某人比另一个人大时...但是 写 Mixins 类时候,我们不会写__init__方法,也不会写类属性。并且 Mixin 类方法看起来更像是工具方法。 我们可以写很多个 Mixin 类,然后用一个子类去继承他们。...由于这些 Mixin 类提供各个工具方法互不相关,所以不存在菱形继承问题。但是子类却可以分别调用这些工具方法,从而扩展子类功能。

3.4K10
  • ue4动态加载模型_U3D动态页面

    大家好,又见面了,是你们朋友全栈君。 本帖纯属个人原创,如有转载请注明出处 需要注意几点: 1.调试环境下进行资源加载方式到打包出来后不一定能够使用。...TSubclassOf这种写法,可以蓝图中选择你这个指定类型蓝图类,比如下面例子就是继承自ASPPivotMeshActor蓝图类可以被选中 /** Pivot Actor bp calss...>通过构造加载方式1 如何非构造函数方式加载一个uasset(直接代码写中文以及中文图片命名方式习惯不好,不要学我) //静态方法, 加载uasset资源,比如UI贴图等。...2, 结合CreateAsset代码创建一个UMG蓝图 // 对于ScrollBox……等类似列表容器可先使用该种方式, 创建然后再做添加 UFUNCTION() UUserWidget* CreateFromAsset...加载一个蓝图类 UPROPERTY() TSubclassOf BP_1; //构造函数实现, 加载一个蓝图类 BP_1 = LoadClass(NULL

    83530

    nextline函数_JAVAScannernext()和nextLine()为什么不能一起使用

    大家好,又见面了,是你们朋友全栈君。...: 输入 1: 2 abc cba 结果 1: str[0] = “abc” str[1] = “cba” 原因:next() 方法遇到有效字符前所遇到空格、tab 键、enter 键都不能当作结束符...回车符 “\r” 它被丢弃缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 时候会碰到读取空字符串情况 解决方案:输入都用

    2.7K10

    UE4 Actor生命周期 SpawnActor DestroyActor剖析「建议收藏」

    Spawn流程,分析到调用BeginPlay结束 剖析Actor生命周期之前,跟了一下Editor和Standlone代码,找到了场景actor列表初始化地方。...8 StartPlayInEditorGameInstance调用了创建GameMode创建GameMode,这个是GameInstance里面创建 UGameInstance::CreateGameModeForURL...GameMode代码,可以发现其实这个平常我们worldSetting里面对每一个umap设置GameMode 就是在这被生成出来。...第二部分,从代码层面调用SpawnActor,对其做分析 1>编码测试 代码里面写了一个SpawnActor,跟进去看看 SpawnActor测试代码 void ABOCPLUSPLUSGameModeBase...SpawnParameters.bNoFail) { return NULL; } } 判断类是否允许构造函数spawn,默认为false应该是。可以改成true。

    2.8K20

    UE4新手常用C++API

    ,而不是某一个引用 TSubClassOf //软引用 TSoftObjectPtr TSoftClassPtr  //蓝图调用函数 UFUNCTION(BlueprintCallable, Category...; } //C++调用蓝图函数 //首先创建C++为基类,蓝图继承后创建一个函数Test #include "OutputDevice.h" FString cmd = FString::Printf..., NULL, true); //蓝图重载C++函数(可以C++其他位置调用一个目前没有任何功能函数(事件),而该函数具体实现交给蓝图实现) UFUNCTION(BlueprintImplementableEvent...)        void OnTest();  //蓝图中Add Event,找到对应函数名,创建后即可实现具体逻辑 //然后也可以自己C++代码调用该方法 void MyActor...GetWorld()->GetFirstPlayerController()->WasInputKeyJustReleased(Key)  //确保内容存在,否则中断代码 ensure(XX) //鼠标屏幕位置

    3.5K20

    很开心,使用mybatis过程踩到一个坑。

    实际开发过程踩到了mybatis一个坑,觉得值得记录、分享一下。 先说说这个坑是什么吧。如果你踩过这个坑,并且知道具体原因,那这篇文章可以加深你印象。...为什么mybatis数字0和空字符串""比返回是true呢?...是的,无脑使用了CV大法。导致欢声笑语写出了bug。orderStatus传入类型是一个Byte,和""做判断有任何意义吗?...最后说一句 解决这个问题之后,还是在网上查了一圈,发现也有人遇到了这样问题,但是点开搜索出来第一篇就是一个错误描述,他说mybatis中会把0当做null来处理?哥们你看源码了吗?...后来把这个问题分享群里之后,群里一个朋友也给我分享了一篇文章,肥朝大佬写《还有这种操作?浅析为什么要看源码》。文中给出了另一种解决方案,有理有据,简明扼要,是一篇很好文章,大家可以看看。 ?

    1K10

    很开心,使用mybatis过程踩到一个坑。

    这是why技术第14篇原创文章 实际开发过程踩到了mybatis一个坑,觉得值得记录、分享一下。 先说说这个坑是什么吧。...为什么mybatis数字0和空字符串""比返回是true呢?...是的,无脑使用了CV大法。导致欢声笑语写出了bug。orderStatus传入类型是一个Byte,和""做判断有任何意义吗?...最后说几句 解决这个问题之后,还是在网上查了一圈,发现也有人遇到了这样问题,但是点开搜索出来第一篇就是一个错误描述,他说mybatis中会把0当做null来处理?哥们你看源码了吗?...后来把这个问题分享群里之后,群里一个朋友也给我分享了一篇文章,肥朝大佬写《还有这种操作?浅析为什么要看源码》。文中给出了另一种解决方案,有理有据,简明扼要,是一篇很好文章,大家可以看看。 ?

    1.7K10

    Unreal Engine 4 RPG 系列教程(八):背包道具拖拽丢弃

    拖拽丢弃 在上一篇文章里,咱们实现了一个简单道具背包(Inventory)功能,玩家可以拾起掉落在地上道具,然后显示背包。...并且可以通过按钮事件来使用和丢弃道具,本篇咱们继续来优化这个背包功能,加上拖拽丢弃功能。 首先在开始之前,先来解决上一次功能 bug,是锅就让来背吧!...问题如下: 当道具数量小于等于1时候,丢弃道具会导致程序崩溃。 没有校验使用和丢弃道具数量,导致数量不足时丢弃也能够 SpawnActor。...解决方案: 由于道具数量小于等于1时候,丢弃道具逻辑没有获取到 PlayerBP 蓝图对象,所以当 SpawnActor 时候获取坐标会出现 Access None 错误 添加一个 isExisted...UI_ItemDrag 创建好之后,我们回到 UI_ItemCube 蓝图中,给 On_Thumbnail_MouseButtonDown 和 OnDragDetected 函数添加逻辑: image

    41030

    【技术总结】UE4Subsystem

    Subsystem出现之前黑暗时代 我们往往需要一个全局,生命周期是整个游戏进行过程中一直存在单例,而如果你想要在UE4里面实现一个单例,那么你需要使用以下代码: UCLASS() class...Subsystem时代 为什么使用Subsystem 用Subsystem好处: 不需要自己管理生命周期,引擎自动帮你管理,而且保证和指定类型(目前只有5种)生命周期一致; 官方提供蓝图接口,能够很方便地蓝图调用...私有变量我们可以看到FSubsystemCollectionBase被声明为了友元类,这使得FSubsystemCollectionBase重函数可以随意访问USubsystem定义函数与成员变量...Subsystem使用 Subsystem调用十分便利,因为官方已经包装好了相关蓝图接口,所以蓝图里面也可以调用Subsystem暴露出来给蓝图调用函数(或者可以Subsystem里面定义好...UE4实验使用 FGCObject 引用UObject 【UE4】TSubclassOf使用

    5.6K71

    虚幻运行时导入资产:泛型与模板妙用

    目录 C++创建蓝图函数库LoadObject 参数利用蓝图泛型代码Demo C++创建蓝图函数库 LoadObject 参数 利用蓝图泛型 代码 Demo 虚幻运行时,动态地选择资源文件(资产/Asset...C++创建蓝图函数库 为了创建静态方法暴露给蓝图使用,最好办法是继承UBlueprintFunctionLibrary,同时使用static修饰函数,否则必须实例化才能使用。 ?...LoadFlags:导入一些可选项,具体参考ELoadFlags枚举类 Sandbox:导入前会先在内存检索已存在实例,猜测这个参数是为了限制检索范围 利用蓝图泛型 C++泛型机制通过template...除此之外,我们需要一个特殊模板类TSubclassOf来让蓝图出现下拉选框,TSubclassOf选择对象是UClass反射类,选择范围是某个指定类所有子类。...函数输出对应类型资产。

    1.7K10

    Unreal随笔系列2: 初始化流程&Gameplay基础类

    Unreal程序入口点和主循环 Unreal使用C++作为基础开发语言;作为一个引擎,它代码结构庞杂,功能繁多。...但如果从整个计算机体系看,它仅是操作系统一个进程;作为C++编写可执行程序,它启动后,代码执行入口必然是main函数。...Windows环境下,使用Visual Studio调试,我们FEngineLoopPreInitPreStartupScreen函数增加断点。...对于GameEngine来说,基本和UEngine具有相同生命周期,原生实现仅有一个UGameInsance实例;只有EdiotrEngine,原生实现会有多个多个不同UGameInsance实例...这里会执行LoadMap操作,期间会创建UWorld,并Spawn GameMode。 4. LoadMap最后,会使用PostLoadMapWithWorld事件通知关心该事件对象。

    1.2K20

    Unreal Engine 4 RPG 系列教程六):背包系统

    背包系统 UMG 在这篇教程要为角色开发一个背包系统,首先在开发这个功能时候,我们得先知道 UE 如何去创建 UI,这里就必须要说到 UMG 了,它提供了许多 UI 组件,例如最基本 "...,所以创建时候需要给控件命名,以及勾选成为可以获取变量,如图: image 背包中将显示一个道具以及它数量,道具将由 Wrap Box 作为容器将其显示出来,所以接下来我们要设计一下格子...,我们背包先默认添加一些道具,这时候就需要一个数组来管理这些默认道具。...函数,通过 Cast 转换成 Player_BP,这样就可以获取角色身上属性了 遍历道具数组,获取每个元素,这里用到了For Each Loop 函数 拿到元素后,通过 SpawnActor 生成变量...函数创建 Cube Widget 通过 Add Child to WrapBox 函数加入到 WrapBox 容器 最后将创建 Actor 通过 DestoryActor 函数销毁 编译保存

    95540

    Unreal Engine 4 RPG 系列教程(七):道具捡起与丢弃

    之前每次打开背包都会去创建一个背包 Widget 对象,现在优化为角色蓝图函数 Event Begin Play 中去创建 Widget,然后打开背包时候再去 AddToViewPort。...销毁 将背包 AddToViewPort 时候,根据背包数组记录值去构建背包视图,这部分在上一篇文章已讲过,这里再把它蓝图逻辑放上来作为参考: image 选中道具 这样背包中就出现了我们捡起道具...解决方案如下: 1.创建一个蓝图接口命名 GameItems_Interface,然后定义接口函数 SetSelectedItem image image 2. UI_ItemCube Widget...创建按钮点击事件,并调用 SetSelectedItem 函数 image image 5. UI_Inventory 实现 SetSelectedItem 函数,并用 PreSelectedItem...丢弃道具 上面讲到了使用道具功能,能够正确表示背包显示逻辑,其实丢弃道具也是一样,就多了一个需要在场景中生成 Actor 逻辑,用到蓝图函数也是 SpawnActor, 其蓝图逻辑如下:

    41630

    UE4新手之编程指南

    游戏类、Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且使用Visual Studio 或 XCode之一编译后可以虚幻编辑器反映出全部变更内容。...蓝图可视化脚本系统是一个强劲工具,可以让类通过连接函数区块和属性引用来在编辑器中进行创建。  ...一个编辑器中使用容器类,用于图表处理节点显示效果和功能, 比如,节点标题和关联菜单。 要想添加一个新动画节点,就必须创建这两个部分内容。...每个这样属性都会导致显示一个姿势连接。这种类型属性总是暴露为 输入引脚。这些引脚不能进行选择性地隐藏或仅用作 详细信息 面板 可编辑属性。...角色编辑器,当鼠标悬停到节点上时显示工具提示信息,该信息是通过重载 GetTooltip() 函数定义

    2.2K80

    UE4网络模块解析(一)

    Listen ServerListen其实表示等待意思,如早期CS游戏该种服务器模式下,一个玩家先加入一个主服务器,然后等待其他玩家加入。...C++,1.属性前增加UPROPERTY(Replicated),2..cpp文件GetLifetimeReplicatedProps函数添加:DOREPLIFETIME(类名称,变量名)。...其中,代码头部需要添加include “Net/UnrealNetwork.h” RepNOTIFY: 复制通知:如果一个变量设置为Rep_Notify,当该变量发生复制时,服务端和收到该值客户端都可以调用一个自定义函数...3、涉及所有者时Actor属性复制条件。 连接所有权会在actor复制期间使用。...如何设置/改变/获取OWNERSHIP呢,C+=变成中一是SpawnActor函数SpawnParameters中有Owner,其实它就对应着蓝图在生成对象时Owner引脚,二是蓝图和C+=中有SetOwner

    63430
    领券