解读UE4家装Demo《HomeDecoration》的蓝图实现

UE4数字孪生模型DEMO 基于UE4构建的数字孪生模型DEMO,具有多种功能。 阅读详情

因项目需要,最近在学习UE4。相比Unity确实比较难上手,但如果有Unity基础,可以很快理解UE4里面的概念,比如Actor对应Unity的GameObject,ActorComponent对应Unity的Component,而UE4还多了很多像Pawn、Character、PlayerController等等的类或者概念,需要时间适应。

UE4的项目可以用纯蓝图、纯C++或者蓝图结合C++三种实现方式,我建议程序员一开始就直接学C++的实现方式,因为蓝图里面的对象、函数、事件都是跟C++里的代码一一对应的,学了C++的实现,能更好的理解和使用蓝图。写写蓝图就是为了养生和方便非程序员使用,我还是觉得写代码比较高效率,无论是编写、阅读和维护,都是更高效的。

正式内容

下面要讲的项目是网上的一个家装DEMO,名字是HomeDecoration,项目纯用蓝图实现,实现了简单的家具拖动和换材质的功能。

文末可附上项目下载地址

在这里插入图片描述

ROOM 关卡蓝图

BeginPlay事件

设置UMG,给每个baseMoveActor设置ActorCamera为Camera3D

按键事件

键盘1和2,控制相机切换
在这里插入图片描述

OperationManager

Event BeginPlay

设置 playercontroller引用

HandMouseClick(custom event)

在MyPlayerController里调用

若点击到物体的ObjectType为Shafa或Arrow,把物体设置成TempCurrentObeject。然后,若该物体不为CurrentObj,且不为ArrowActor,那就调用setDepthFalse和setCollisionEnableAndArrow,obj为把currentOb。再调用setDepthTrue,obj为TempCurObj。最后调用setCollisionDisableAndArrow,obj为curObj。

setDepthFalse

给物体的所有mesh调用SetRenderCustomDepth为False

setDepthTrue

给物体的所有mesh调用SetRenderCustomDepth为True,并调用SetCurrentObjectState

setCollisionDisableAndArrow

SetCurrentObjectState(custom event)

在setDepthTrue中调用

设置currentObj,同时给playerctrl设置currentSelectedObj,若obj是baseMoveActor,获取它的Material,转成Material,设置给playercontrl的preSelectedMaterial,然后设置它的Material为BaseMaterial(选中状态)

MyPlayerController

  • 键盘快捷键事件

  • 传递鼠标左键事件给OperationManager

  • 历史列表操作

Camera3D(Pawn)

在这里插入图片描述

  1. InputEvent模块,鼠标移动和键盘w/s输入事件
  • 获取鼠标移动数值,赋值给mouseX和mouseY变量

  • 获取MoveForward(键盘w)、MoveBack(键盘s)输入事件,设置isMoveForward和isMoveBack变量。这两个变量属于flag类型的变量,用于后面EventTick中控制镜头移动。

  1. EventTick
    在这里插入图片描述
    EventTick->判断是否3DLock->若否,顺序执行下面的事件
Camera moving of view in 3D view

事件:Tick、鼠标中键

在这里插入图片描述

鼠标中键控制Gate的open和close,Gate初始化为closed。

具体功能是,鼠标中键按下时,Gate为open,此时鼠标移动控制Camera3D在地板上平移;鼠标松开时,即gate为close时不控制。

RotationAngleOfViewIn3DView

在这里插入图片描述

鼠标右键控制镜头旋转

IsMoveForward 和 IsMoveBack

在这里插入图片描述

通过两个flag来控制事件是否执行

ArrowActor

BeginPlay事件

赋值Camera3D_ref变量,并记录其location,复制给tempLocation

Event Tick

Handle mouse cursor leave 3D arrow when mouse be pressed

IsClicked Flag触发执行,根据MyPlayerController的IsLeftMouseDown判断执行ArrowClickEvent还是ArrowReleaseEvent

Handle 3d arrow scale when camera3d moving far

bInit Flag触发执行,如果camra3d位置远离上次位置超过一定距离, 改变arrow得scale

3D Arrow color change when mouse cursor across and click on it和Determine the left arrow or mouse release on 3d arrow and set color
  • 鼠标划过,设置相应参数,设置Arrow颜色

  • 鼠标点击,设置相应参数,设置Arrow颜色

  • SetArrowColor是一个自定义的函数,通过动态材质修改颜色

  • 鼠标离开,恢复初始化颜色

BaseMoveActor

1. 【Event BeginPlay】

注释为:init

赋值MyPlayerController_Ref,setArrowHide,Bind arrow event
三个Arrow Actor set visibility?(不设置的话,箭头不会显示)
接着执行下面的模块

Calculating model’s length、width、high

获取Actor的Bounds,经过运算,记录网格中心点,用于吸附

2. 【EventTick】

Handle model rotation, let 3d arrow always toward world rotation

设置三个arrow的朝向

Handle 3D Arrow Moving and direction

控制模型移动

Handle model sorption

xifu flag 控制是否执行吸附事件

3.【OnBeginCursorOver】

注释为:change model’s material when drag material from umg panel

**作用:**设置材质

Tags为Move时,

若PlayerController的MaterialTypeStruct为Avaiable时(应该就是选中材质的时候),且Type为一样的类型(如都是PiGe),则把MaterialTypeStruct的value赋值给material,并把该value设置为playctrl里的preSelectedMaterial。

接着,重置MaterialTypeStruct。若PlayerContrl中curSeletedObj为当前物体,设置collision为enable(type作用不详?)。

Tags不为move时(不知道哪里设置的,如floorStaticMeshActor),重置MaterialTypeData

4.【OnClicked】

注释为:set 3d arrow show state

**作用:**点击物体,显示指针

点击mesh触发执行,’set arrow hide in game‘。

点击mesh,选中物体,显示arrow。再点击不进入该方法,不知道原因。

5. Event HandleXiFu 吸附

还没看这段

​

虚幻4 游戏引擎(二):蓝图教学 蓝图 蓝图是虚幻4中的可视化脚本系统,是一种快速开发游戏原型的方法。无需逐行编写代码,您可以直观的做所有事情:拖放节点,将它们的属性设置在UI中,并拖动连接线来连接。除了成为一个快速的原型开发工具之外,蓝图还使得非编程人员可以很快速地上手编写脚本。 注:博主水平有限,如有疑问,请参见原英文教程 在本教程中,您将用蓝图: 1 设置一个从上向下看的摄像机 2 创建一个由玩家控制的具有基本动作actor 3 设置玩家输入 4 创建一个物品,当玩家碰到它时消失。 开始 下载starter pro... 阅读详情

相关推荐

Unreal Engine蓝图编程学习(二)

二 升级玩家技能 目标: 我们通过修改玩家控制器蓝图,来扩展之前的射击交互的核心部分。 为角色添加冲刺、摧毁游戏对象功能,在摧毁对象时附加爆炸效果和声音效果。 玩家输入和控制 视野 时间轴和分支逻辑 为对象交互添加声音和例子效果 2.1 添加加速功能 ...

packdge_black的博客 1327

使用UE来开发创建一个室内设计师的效果

使用虚幻引擎(Unreal Engine, UE)来开发页面和创建家装设计工具是一个强大而复杂的过程。开发这样的应用需要掌握UE的多个方面,包括蓝图编程、3D建模、材质系统、光照渲染等。建议先从小规模原型开始,逐步添加功能,不断迭代改进。随着技能的提升,逐步增加更复杂的功能,如高级渲染、VR支持等。记住,开发这样的应用是一个长期过程,需要持续学习和实践。

远方雪的专栏 1447

UE4家装系统工程源码/内含模型/材质/模型拖拽

1.3D坐标透视/物体描边 2.3D坐标轴移动/旋转 3.背包拖拽生成物体 4.第一人称漫游视角 5.顶视功能 6.3D环视可旋转缩放 7.室内小地图 8.复制/清空功能 9.360度射线自动吸附 源码蓝图工程下载地址------------工程下载 ...

丨漠河以北丨 3340

cursor,click失效原因

设置了 pointer-events: none; 上面有遮罩层 z-index提高层次

珎珎啊 1250

RH850_U2A系列HSM安全核开启但是固件未烧录导致无法启动也无法再烧入固件废板问题分析解决

hsm核导致的安全锁死补救方案

u011941262的博客 1734

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 418

UE4 Actor部分方法介绍

原创内容,转载请注明出处 创建一个基于Actor的蓝图,可以看到左侧Override函数的时候可以覆盖一些方法 如下 Actor事件列表1.伤害二级目录2.Actor生命周期1>BeginPlay2>Tick3>EndPlay4>Destroyed3.Actor Overlap二级目录4.Actor Collision二级目录 1.伤害 二级目录 2.Actor生命周期 1>BeginPlay 刚开始Spawn出来后调用的 2>Tick 每帧执行 3>E

u011718663的博客 5746

使用ONNX Runtime在Java Web应用中部署深度学习模型

当应用场景需要集成深度学习模型进行推理时,直接在Java Web应用中集成深度学习框架可能会面临性能、兼容性等问题。为了将深度学习模型无缝集成到Java Web应用中,是一项广受认可且实用的方法。本篇文档将介绍如何将模型转换为ONNX格式,并通过ONNX Runtime Server进行部署,并通过Java Web应用调用以进行回归或预测任务。本方案的主要目标是实现以下功能:将PyTorch模型转换为ONNX格式。部署ONNX Runtime Server,加载ONNX模型并提供推理服务。

shysea2019的博客 8857

一种基于UE4平台多人交互3D家装设计系统及使用方法与流程

     本发明涉及一种基于UE4平台多人交互3D家装设计系统及使用方法,属虚拟现实技术领域。   背景技术:   目前随着虚拟现实技术的飞速发展,当前在进行家装实际工作中,为了提高设计方案对用户展示的便捷性和准确性,因此虚拟现实技术在家装领域中得到了极为广泛的应用,当前在家装领域中所使用的虚拟现实技术,...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 683

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 565

CasADi - 最优控制开源 Python/MATLAB 库

CasADi 是一款开源软件工具,用于数值优化,特别是最优控制(即涉及微分方程的优化)。该项目由 Joel Andersson 和 Joris Gillis 在鲁汶工程大学工程优化中心 (OPTEC) 在读博士生在 Moritz Diehl 的指导下发起。本文档旨在简要介绍 CasADi。

机器人控制与仿真应用 7935

最简单的 UE 4 C++ 教程 —— 指定 Actor 的触发器框【二十一】

原教程是基于 UE4.18,我是基于 UE 4.25】 英文原地址 接上一节教程,本教程将通过特定的 actor 触发重叠事件。 创建一个新的 C++ TriggerBox 类,并将其命名为 TriggerBoxSpecificActor。在头文件中,我们将为特定的 actor 声明两个 void 重叠函数和 AActor 类。 下面是最终的头代码。 TriggerBoxSpecificActor.h #pragma once #include "CoreMinimal.h" #inclu.

ShaderJoy 的兴趣技术杂货铺 1869

get_ccopt系列命令介绍

get_ccopt_property:用来获取cts阶段,clock tree上所有的参数信息,可以通过get_ccopt_property –help *获取所有参数。get_ccopt_skew_group_delay:用来获取skew group的相关信息,可以通过筛选出特定条件下skew_group的参数,如skew_group下latency最长是多少;get_ccopt_clock_tree_source_groups:获取clock tree的source group名字;

芯冰乐 281

Unreal Engine 4 系列教程 Part 2:蓝图教程

原文:Unreal Engine 4 Blueprints Tutorial作者:Tommy Tran译者:Shuchang Liu 在本篇教程里,你将学会如何用蓝图系统创建玩家角色,设置输入,并编写角色通过触碰,收集道具的游戏逻辑。 蓝图是Unreal Engine 4的一套可视化脚本系统,通过蓝图可以快速制作游戏原型。你不再需要一行行的编写代码,取而代之的是可视化操作:拖拽节点,在UI里设置节点参数,给节点进行连线。 除了作为一款非常便捷的原型工具,蓝图也降低了非开发人员制作游戏逻辑的门槛。 在本..

qq_34966169的博客 2032

如何用DeepSeek写年底工作总结?——从入门到精通的全流程指南

AI助手DeepSeek如何高效撰写工作总结 摘要:本文介绍如何利用DeepSeek智能AI助手高效完成工作总结写作。工作总结具有结构固定、语言规范、内容数据化三大特性,而DeepSeek的结构化生成、风格适配、数据整合和迭代优化四大核心能力与之完美匹配。文章提出"准备-搭架-填充-优化"四步工作法:1)精准输入岗位、时间范围等核心信息;2)先搭建逻辑清晰的提纲框架;3)分模块填充具体内容,突出数据与案例;4)通过风格润色和细节补充进行优化。通过合理运用多模态材料处理能力,DeepSee

通俗易懂学IT 288

电池模拟器【 电化学模型深度解析:PNGV模型原理与应用(专业科普版)】

1. 模型起源PNGV(Partnership for a New Generation of Vehicles)模型诞生于1993年美国“新一代汽车合作计划”,旨在提升混合动力汽车电池系统的建模精度。该模型最初针对铅酸电池设计,后经改进广泛用于锂离子电池、镍氢电池等动态特性仿真。2. 模型定位PNGV属于**等效电路模型(ECM)**的进阶版本,介于简单Rint模型与复杂电化学模型(如P2D模型)之间,兼顾计算效率与精度,是BMS(电池管理系统)中SOC/SOH估算的主流选择。PNGV模型凭借。

优快云-新能源汽车研发测试专业博主 1698

UE4学习DEMO心得

【代码】UE4学习DEMO心得。

qq_41421606的博客 564

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【UE】UE4下载安装及测试demo

UE4 的全名是 Unreal Engine 4,中文译为“虚幻引擎4”。UE4 是一款由 Epic Games 公司开发的开源、商业收费、学习免费的游戏引擎。(已经更新到UE5了,但网上4的教程较多)虚幻引擎主要用来制作主机游戏,风靡全球的吃鸡游戏 “绝地求生” 也是由UE4 引擎开发。

DevFrank的博客 4538

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

UE4鼠标over事件失灵的解决方案

UE4鼠标事件失灵,静态网格体和碰撞体的On Begin Cursor ,On End Cursor Over事件失灵,无反应。

图布修的博客 1308

UE4_Mouse_Interaction——拖拽物体的实现

鼠标拖拽物体

Growthofnotes的博客 1557

(77)蓝图事件

事件(Events) 是从游戏性代码中调用的节点,在 事件图表(EventGraph) 中开始执行个体网络。它们使蓝图执行一系列操作,对游戏中发生的特定事件(如游戏开始、关卡重置、受到伤害等)进行回应。这些事件可在蓝图中访问,以便实现新功能,或覆盖/扩充默认功能。任意数量的 Events 均可在单一 EventGraph 中使用,但每种类型只能使用一个。   每个事件只能执行单个对象。

革命队伍的螺丝钉 2484

[浅析]UE4材质基础总结

图形学基础知识 除了自发光物体,成像皆由视网膜接收物体各尺度平面反射的光线构成 光照效果一般可分为漫反射和镜面反射(高光)两部分 漫反射:凹凸不平的表面反射的没有方向性的光 镜面反射:若反射面比较光滑,当平行入射的光线射到这个反射面时,仍会平行地向一个方向反射出来 光源照射物体时,将会与物体产生多种交互现象,反馈大致为: 光源到达物体表面时、物体原子会将光子部分吸收partially absorbed,能量守恒转化为热能,反射的部分较弱;且根据折射率具有不同角度微平面散射scattered, 穿透的部分将

鬼泣依旧 8938

面向UE4新手----基于UE4的室内软装系统设计和实现思路

由于一直有朋友在与我讨论关于UE4室内软装的系统设计问题,问题也都大同小异,正好类似项目有一些经验,因此在此分享给大家,希望能帮助更多UE4的新手和小团队。 由于我本人是独立游戏开发者而非室内设计方向的,并且当初这个项目是基于VR的,本身需求更多一些,因此在此分享一个简化版的,通过传统键鼠操作的设计思路,抛砖引玉。 后续可能还会继续更新更多相关的内容。

Jayden‘s Gaming Studio 7895

UE4_蓝图室内功能交互

点击开关门效果 点击开关灯效果 键盘开关灯效果及更改颜色 进入区域开关灯效果 电视播放视频 窗帘打开和关闭 需要将根结点置于左下角 这样缩放就是左边保持不变向右放大 向左缩小 蓝图 ...

weixin_42137574的博客 2500

在 UE5 中使用蓝图:全面操作指南

事件图表(Event Graph):这是编写蓝图逻辑的主要区域,通过连接节点来创建事件和执行流程。变量窗口(Variables):在这里可以创建和管理蓝图的变量,包括变量的类型、默认值等。函数库(Function Library):显示当前蓝图中定义的函数,可重复使用这些函数来简化逻辑。细节面板(Details Panel):用于查看和编辑选中节点或对象的属性和设置。

m0_57836225的博客 8226

基于UE4开发的家装系统(地图编辑系统)

http://www.acfun.cn/v/ac3098902

cgboys86的博客 4298
上一篇: 制作YOLOv5的数据集
下一篇: UE4通过C++代码实现蓝图方法(UFUNTION暴露代码接口)
Hi David
博客等级 码龄18年 5196粉丝 84原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi David

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值