开发手札:UnrealEngine编辑器开发

      以前在unity框架中开发了非常多实用且高频使用的编辑器工具,现在准备把目前用得上工具移植到ue4中。
下面说明一下ue4开发编辑器工具的流程。
1.创建编辑器工具控件
在这里插入图片描述
2.在控件中创建一个Button和一个EditableText,用于测试
在这里插入图片描述
3.新建一个继承UEditorUtilityWidget的类MyEditorUtilityWidget
在这里插入图片描述
在这里插入图片描述
4.开始编写代码控制Button和EditableText

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "EditorUtilityWidget.h"
#include "Runtime/UMG/Public/UMG.h"
#include "MyEditorUtilityWidget.generated.h"/****/
UCLASS()
class MYUNREALCLRDEMO2_API UMyEditorUtilityWidget : public UEditorUtilityWidget
{GENERATED_BODY()public:UPROPERTY(meta = (BindWidget))UButton* Button_Log;UPROPERTY(meta = (BindWidget))UEditableText* EditableText_Log;virtual void NativeConstruct() override;private:UFUNCTION()void ButtonLogClick();
};
// Fill out your copyright notice in the Description page of Project Settings.#include "MyEditorUtilityWidget.h"void UMyEditorUtilityWidget::NativeConstruct()
{Super::NativeConstruct();if (Button_Log != nullptr){Button_Log->OnClicked.AddDynamic(this, &UMyEditorUtilityWidget::ButtonLogClick);}
}void UMyEditorUtilityWidget::ButtonLogClick()
{if (EditableText_Log != nullptr){EditableText_Log->SetText(FText::FromString(FString::Printf(TEXT("测试Editor开发"))));}
}

      PS:只是简单示例一下怎么运行,所以单纯点一下按钮打印一句文字
5.在编辑器工具控件中重置父类为自定义的MyEditorUtilityWidget
在这里插入图片描述

      这一步很坑爹,我刚开始死活找不到MyEditorUtilityWidget选项,后面直接创建MyEditorUtilityWidget的蓝图类MyEUWBlueprint后,选项就出现了,这不纯搞笑呢?c++类还不能直接继承了…
6.右键选择运行编辑器工具控件,则打开了编辑器窗口
在这里插入图片描述

      7.最终可得运行效果
在这里插入图片描述

      最后,移植功能最方便的还是AI翻译,足以完成70%移植工作量

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

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

相关文章

EXCEL开发之路(一)公式解析—仙盟创梦IDE

Excel 数据校验:基于自定义格式的深度解析与开发实现引言在数据处理和管理领域,Excel 是一款广泛应用的工具。确保 Excel 中数据的准确性和完整性至关重要,而数据校验是达成这一目标的关键手段。本文将借助特定的代码示例,深入探讨…

Day14——JavaScript 核心知识全解析:变量、类型与操作符深度探秘

接续上文:《前端小白进阶 Day13:JavaScript 基础语法 交互技巧 知识图谱,零基础也能懂》-CSDN博客 点关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!! 主页:一位…

anaconda本身有一个python环境(base),想用别的环境就是用anaconda命令行往anaconda里创建虚拟环境

差不多是这个意思,但需要稍微澄清一下:Anaconda 可以管理任意版本的 Python你安装了 Anaconda 后,默认有一个 base 环境自带的 Python。如果你想用其他版本,比如 Python 3.9、3.10,可以用 conda create -n py39 python…

毕业项目推荐:28-基于yolov8/yolov5/yolo11的电塔危险物品检测识别系统(Python+卷积神经网络)

文章目录 项目介绍大全(可点击查看,不定时更新中)概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式…

字库原理 GB2312-80

这篇文章介绍的是 在嵌入式开发中 常常会遇见的 中文字体点阵字库(如汉字库) 的核心编码原理:区位码 偏移计算 内存映射。我们将会介绍 GB2312-80 字库的工作机制。 📘什么是 GB2312-80? GB2312-80 是中国国家标准定…

【Golang】 项目启动方法

Go 项目启动方法 1. 常见启动方式 使用 go run 命令 # 运行主程序文件 go run main.go# 运行多个文件 go run *.go# 运行整个模块(Go 1.11) go run .# 运行指定包 go run github.com/yourusername/yourproject先构建再执行 # 构建可执行文件 go build# 运…

3459. 最长 V 形对角线段的长度

Problem: 3459. 最长 V 形对角线段的长度 文章目录思路解题过程复杂度Code思路 深度优先搜索 记忆数组 解题过程 主函数和先遍历从每一个1开始搜索,并枚举每一个方向进入dfs,dfs先检查是否遍历过,然后枚举下一个可以走的方向,最后…

Unity 串口通信

可以通过计算机管理->设备管理器,查看端口串口通讯,通常是指的通过计算机或其他设备上的串行端口实现数据传输的过程。 定义与特点:串口通讯是按位(bit)发送和接收字节的通信方式,它将数据一位一位地顺序…

ArcGIS JSAPI 高级教程 - 创建渐变色材质的自定义几何体

ArcGIS JSAPI 高级教程 - 创建渐变色材质的自定义几何体核心代码完整代码在线示例工作中遇到一个比较复杂的功能,其中用到渐变色,于是研究了一下,发现虽然 JS API 不直接支持渐变色,但是也可以自定义创建渐变色,通过 M…

不增加 GPU,首 Token 延迟下降 50%|LLM 服务负载均衡的新实践

作者:钰诚 简介 传统的负载均衡算法主要设计用于通用的 Web 服务或微服务架构中,其目标是通过最小化响应时间、最大化吞吐量或保持服务器负载平衡来提高系统的整体效率,常见的负载均衡算法有轮询、随机、最小请求数、一致性哈希等。然而&am…

《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 7】【使用buildroot方式构建文件系统】

1. 使用Buildroot 构建的优势 使用 Buildroot 构建 rootfs 的优点在于 快速、简洁、可裁剪、可重复,特别适合 中小型嵌入式 Linux 项目(如车机、路由器、工业控制设备、IoT 网关)。它帮助开发者避免繁琐的手动编译和集成工作,专注…

一洽客服系统:网页咨询入口设置

一洽客服系统提供了灵活的网页咨询入口设置,旨在为用户提供多样化的咨询类别选择,并根据用户的需求接入指定的路由线路。以下是该功能的详细说明:一、网页咨询入口设置针对用户的不同业务提供不同的咨询类别选择,用户选择业务后接…

Apache Flink错误处理实战手册:2年生产环境调试经验总结

作者:_Naci Simsek 前言 在流处理领域,Apache Flink 已经成为企业级实时数据处理的首选框架。然而,在生产环境中,开发者和运维人员经常会遇到各种看似神秘的问题。基于过去两年中大量客户在真实场景中的使用案例,可以观…

嵌入式开发学习 C++:day01

C概述 C诞生 1972年前后,计算机先驱丹尼斯里奇开始设计C语言并用它来重写Unix系统,里奇的这个决定催生了计算机领域最石破天惊的两门重炮:Unix和C,这两者都是IT产业中鼻祖级的存在,Unix是现代苹果系统和Linux系统的最初来源&#…

LeaferJS创建支持缩放、平移的画布,并绘制简单图形

文章目录介绍原生JS使用LeaferJS的简单示例原生JS使用LeaferJS并支持缩放平移画布Vue中使用LeaferJS并支持缩放平移介绍 LeaferJS官网:https://www.leaferjs.com/ 官方快速上手的教程地址:https://www.leaferjs.com/ui/guide/install/ui/start.html 原…

JumpServer 堡垒机部署与 SSH 公钥接入服务器教程

前言:在企业运维场景中,服务器的安全访问与操作管控至关重要。JumpServer 作为开源堡垒机的典型代表,凭借集中管控、权限精细分配、操作全链路审计等核心能力,成为保障运维安全合规的关键工具。 无论是中小企业简化运维权限管理&a…

TensorFlow 面试题及详细答案 120道(21-30)-- 模型构建与神经网络

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 21. TensorFlow中构建神经…

Qt图片上传系统的设计与实现:从客户端到服务器的完整方案

文章目录系统架构概览核心组件解析1. ImageUploadWorker:上传任务的执行者关键方法解析2. ImageUploadManager:线程的"指挥官"3. ImageUploader:网络通信的"信使"4. 服务器端:图片的"收纳箱"关键技…

MySQL InnoDB vs MyISAM

MySQL 两种引擎(InnoDB vs MyISAM)核心区别事务与锁机制‌‌特性‌‌InnoDB‌‌MyISAM‌‌事务支持‌支持 ACID 事务(原子性、一致性、隔离性、持久性),适用于需强数据一致性的场景(如金融交易)…

软件定义汽车(SDV)调试——如何做到 适配软件定义汽车(SDV)?(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…