UE5 PlaceActor

  • PlaceActors 需在引擎初始化之后
    在这里插入图片描述

  • 但,单为这一个功能,更改整个模块的启动顺序,也不太划算

  • 更好的办法是,启动顺序保持正常(如"LoadingPhase": "Default" ),然后通过监听引擎初始化完成的回调事件来实现

    FCoreDelegates::OnPostEngineInit.AddRaw(this, &FAdvModModule::RegisterPlaceActors);
    
  • 1、模块启动时,绑定回调事件

    void FAdvModModule::StartupModule()
    {FCoreDelegates::OnPostEngineInit.AddRaw(this, &FAdvModModule::RegisterPlaceActors);
    }
    
  • 2、模块关闭时,卸载

    void FAdvModModule::ShutdownModule()
    {UnregisterPlaceActors();
    }void FAdvModModule::UnregisterPlaceActors()
    {// 注意,直接判断模块是否有效if (!IPlacementModeModule::IsAvailable()){return;}IPlacementModeModule& PlacementModeModule = IPlacementModeModule::Get();PlacementModeModule.UnregisterPlacementCategory(FName("ExtendPlaceActors"));
    }
    
  • 3、注册

    
    void FAdvModModule::RegisterPlaceActors()
    {// 判断模块是否已加载IPlacementModeModule& PlacementModeModule = IPlacementModeModule::Get();if (!PlacementModeModule.IsAvailable()){return;}// 注册分类int32 SortOrder = 0;FPlacementCategoryInfo AdvCategoryInfo(FText::FromString("ExtendActors"), FSlateIcon(), FName("ExtendPlaceActors"), "ExtendActors", SortOrder += 10);PlacementModeModule.RegisterPlacementCategory(AdvCategoryInfo);// 创建子项FPlaceableItem* Item01 = new FPlaceableItem(nullptr, FAssetData(AStaticMeshActor::StaticClass()), SortOrder += 10);FPlaceableItem* Item02 = new FPlaceableItem(nullptr, FAssetData(ASkeletalMeshActor::StaticClass()), SortOrder += 10);FPlaceableItem* SKM_Manny = new FPlaceableItem(nullptr, FAssetData(LoadObject<USkeletalMesh>(nullptr, TEXT("/Game/Characters/Mannequins/Meshes/SKM_Manny.SKM_Manny"))), SortOrder += 10);FPlaceableItem* SKM_Quinn = new FPlaceableItem(nullptr, FAssetData(LoadObject<USkeletalMesh>(nullptr, TEXT("/Game/Characters/Mannequins/Meshes/SKM_Quinn.SKM_Quinn"))), SortOrder += 10);FPlaceableItem* ABP_Manny = new FPlaceableItem(nullptr, FAssetData(LoadObject<UAnimBlueprint>(nullptr, TEXT("/Game/Characters/Mannequins/Animations/ABP_Manny.ABP_Manny"))), SortOrder += 10);FPlaceableItem* ABP_Quinn = new FPlaceableItem(nullptr, FAssetData(LoadObject<UAnimBlueprint>(nullptr, TEXT("/Game/Characters/Mannequins/Animations/ABP_Quinn.ABP_Quinn"))), SortOrder += 10);FPlaceableItem* Item_Material = new FPlaceableItem(nullptr, FAssetData(LoadObject<UMaterial>(nullptr, TEXT("/Game/Characters/Mannequins/Materials/M_Mannequin.M_Mannequin"))), SortOrder += 10);// 将子项添加到分类中PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(Item01));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(Item02));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(SKM_Manny));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(SKM_Quinn));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(ABP_Manny));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(ABP_Quinn));PlacementModeModule.RegisterPlaceableItem(AdvCategoryInfo.UniqueHandle, MakeShareable(Item_Material));}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/279172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openEuler商业化进展可观:累计装机量超610万套,市场持续扩容

12月15日至16日&#xff0c;以“崛起数字时代&#xff0c;引领数智未来”为主题的操作系统大会&#xff06;openEuler Summit 2023在北京国家会议中心举办。大会旨在汇聚全球产业界创新力量&#xff0c;构筑坚实的基础软件根基&#xff0c;推动基础软件技术持续创新&#xff0c…

喝葡萄酒时观酒闻香尝味究竟有什么用?

对许多人来说&#xff0c;在品尝葡萄酒时能发现大多数人闻不到的香气和尝不到的味道似乎是一种神奇的能力。其他人则认为这是学究式葡萄酒爱好者过于活跃的想象&#xff0c;或者是保持葡萄酒鉴赏精英声誉的一种方式&#xff0c;但两者都不是。 部分是艺术&#xff0c;部分是科…

巨杉数据库入选“2023信创独角兽企业100强”

近日&#xff0c;《互联网周刊》、eNet研究院、德本咨询联合发布了“2023信创独角兽企业100强”榜单&#xff0c;巨杉数据库凭借卓越的技术实力和出色的研发能力荣登榜单&#xff0c;本次上榜既是对巨杉数据库长期深耕信创领域的高度认可&#xff0c;也是对其在分布式文档型数据…

【问题解决】Buildroot文件系统dropbear 上位机scp命令Permission denied, please try again.

前提&#xff1a; 上位机&#xff1a;Ubuntu虚拟机与开发板同局域网开发板&#xff1a;Buildroot文件系统&#xff0c;开启了dropbear&#xff0c;已经联网与虚拟机同局域网 liefyuanubuntu:~/tcp-test/tcp-c-client$ scp tcp_client root192.168.8.199:/opt root192.168.8.1…

break用法

break他是用于从循环语句中跳出一层循环体的&#xff0c;提前结束循环 但是值得注意的点事break只能用在循环语句和switch当中 那么我们上代码进行具体的理解&#xff1a; 如果圆的面积大于100就会终止循环&#xff0c;那么如何体现出他只能终结一个循环呢&#xff0c;请看下…

软考、PMP 区别

软考 考试时间&#xff1a;一年两次&#xff0c;报名3月&#xff0c;8月&#xff1b;对应考试&#xff1a;5月最后一个周末&#xff0c;11月第一个周末 报名费&#xff1a;50-200元&#xff0c;每个城市不同北京57每科 报名网站&#xff1a;中国计算机技术职业资格网 考试等…

基于SSM的中文学习系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的中文学习系统(有报告)。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybatis JspMave…

Dagger2基本使用3之其他使用

一&#xff0c;Dagger容器中添加不是Dagger创建的实力对象 在实际使用中&#xff0c;有些类的已经创建好了&#xff0c;dagger需要使用这些类&#xff0c;就需要通过参数传入&#xff0c;下面是android中传入application实例的一个例子 1&#xff0c;创建module //创建需要传…

关于技术架构的思考

技术选型实则是取舍的艺术 这句话是我偶然在一篇技术架构方面的文章上看到的&#xff0c;每当我需要给新项目进行技术选型&#xff0c;决定技术架构时&#xff0c;一直坚信的。 当我们做技术选型时&#xff0c;需要考虑的东西非常多。比如&#xff0c;用关系型数据库还是非关…

uniapp之屏幕右侧出现滚动条去掉、隐藏、删除【好用!】

目录 问题解决大佬地址最后 问题 解决 在最外层view上加上class“content”;输入以下样式。注意&#xff1a;两个都必须存在在生效。 .content {/* 跟屏幕高度一样高,不管view中有没有内容,都撑开屏幕高的高度 */height: 100vh; overflow: auto; } .content::-webkit-scrollb…

自动化测试(三)webdriver的常用api(1)

目录 等待 sleep休眠 隐式等待 显式等待 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器宽、高 操作浏览器的前进、后退 控制浏览器滚动条 键盘事件 键盘按键用法 键盘组合键用法 鼠标事件 定位一组元素 前面两章我们讲了selenium环境的…

cmake 从零开始源码安装(Ubuntu系统)

Ubuntu 系统安装 &#xff11;、安装编译工具和依赖库 ## 必要的 sudo apt install gsudo apt install make## 与make 同等级的构建工具&#xff0c;为了演示而安装的 sudo apt install ninja-build## 压缩工具库 sudo apt install unzip## 加密和传输(根据系统名称可能不一样…