ue4

UE4学习笔记

无人久伴 提交于 2019-12-05 02:08:59
WidgetInteration 3D互动射线可以 按下3D ACctor(添加2Dwidget)的button进行互动 开始事件循环和关闭事件循环 配合后期处理素材可以进行描边 获取镜头射线 返回触碰到的的actor进行操作 局域网联机相关蓝图:(Absolute表示加载新资源而不是使用当前关卡资源) UI操作相关(删除所有UI 和创建一个新的UI并绘制到窗口) 退出游戏 查找局域网(循环找出所有可连接对象,将找到的服务作为参数传递出去)和加入 创建绑定,会一直触发。 来源: https://www.cnblogs.com/yangshengjing/p/11896930.html

虚幻4 UE4 蓝图之关卡蓝图实现自动开关门

与世无争的帅哥 提交于 2019-12-05 01:18:09
新建项目 往关卡中放置一个门 在内容浏览器中找到 门 的静态网格体 拖放到关卡中 此时门默认没有碰撞,人物可以直接穿过 给门添加碰撞 双击内容管理器中的 SM_Door,打开编辑窗口 选择菜单“碰撞”-“添加盒体简化碰撞”,给门添加碰撞框架 门周围的绿边框即是碰撞区域 通过缩放调整碰撞区域使其与门基本匹配 添加碰撞后保存,进入关卡可以发现人物已经无法穿过门 添加触发器 将盒体触发器拖入关卡中 调整触发器大小及位置 将门设置为可移动 选中门,在细节面板中“变换”-“移动性”-切换为“可移动” 编辑关卡蓝图 操作快捷菜单“蓝图”-“打开关卡蓝图” 添加触发器事件 从世界大纲视图中选中触发器对象“TriggerBox” 在空白处右键,添加 Begin Overlap 和 End Overlap 两个事件 添加Rotation设置蓝图 从世界大纲中将门的对象 SM_Door 拖进关卡蓝图 从 SM_Door 拖出节点 SetActorRotation 添加时间轴蓝图 在空白处右键,搜索timeline,添加时间轴 双击打开时间轴,选择“添加浮点型轨迹” 右键-添加关键帧,或按Shift+左键直接添加,添加两个关键帧 选中关键帧,直接设定相应的值,这里我设置第一个关键帧 0s,值0;第二个关键帧2s,值85 觉得变化太生硬可以同时选中两个关键帧,右键,关键帧插值-勾上“自动”即可

【UE4】c++ 创建组件

我只是一个虾纸丫 提交于 2019-12-04 10:40:42
构造函数用构造函数的创建组件的接口,非构造函数用非构造函数的接口。 构造函数中 UStaticMeshComponent* MyComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyComponent"));MyComponent->SetupAttachment(RootComponent); 非构造函数 UStaticMeshComponent* MyComponent = NewObject<UStaticMeshComponent>(this, TEXT("MyComponent"));MyComponent->RegisterComponent();MyComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepRelativeTransform); NOTE: NewObject+Register的方法不能在构造函数中创建组件。 .h文件中不要声明MyComponent,如果声明的话,不要加class 来源: https://www.cnblogs.com/mu-ye/p/11855782.html

UE4的内存模型

不羁岁月 提交于 2019-12-03 14:37:16
转自: https://blog.csdn.net/noahzuo/article/details/73565259 UObject 和 FUObjectItem UE4运行的基本单位是 UObjet ,然而 UObject 针对于内存相关的东西都储存在结构体 FUObjectItem 中。有个全局变量 GUObjectArray ,可以通过以下代码来遍历所有的Objects: for (FRawObjectIterator It(false); It; ++It) { FUObjectItem* ObjectItem = *It; UObject* obj = ObjectItem->Object; } 可以通过如下代码来获得一个 UObject 对应的 ObjectItem FUObjectItem* ObjectItem = GUObjectArray.ObjectToObjectItem(Object); GUObjectArray中有几个函数可以通过索引和ObjectItem、Object的相互获取,对应的函数为IndexToObject、ObjectToIndex、IndexToObjectUnsafeForGC等。 GUObjectArray中所有的UObjectArray的分布是有顺序的——那些不会被GC的UObject,例如各StaticClass

ue4读取灰度图生成三维地形mesh

和自甴很熟 提交于 2019-12-03 13:32:39
转自: https://www.cnblogs.com/gucheng/p/10116857.html 新建ue c++工程。 在Build.cs中添加"ProceduralMeshComponent"模块。 在 uproject中添加"ProceduralMeshComponent"模块。 创建材质,传入grass贴图 导入灰度图资源 创建继承自Actor的类 ATerrainCreateActor,并创建蓝图类对象 将蓝图对象拖入场景,设置其灰度贴图参数、Z值缩放比例参数、材质参数 最终效果 ATerrainCreateActor类代码如下 头文件 #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "ProceduralMeshComponent.h" #include "TerrainCreateActor.generated.h" UCLASS() class UETERRAIN_API ATerrainCreateActor : public AActor { GENERATED_BODY() public: ATerrainCreateActor(); private: UPROPERTY(VisibleAnywhere)

ue4 新渲染管线整理

耗尽温柔 提交于 2019-12-03 11:52:09
来自uod2019 refactoring the mesh drawing pipeline for unreal engine 4.22 FMeshDrawCommand 存储了rhi在一个mesh pass渲染调用需要知道的所有信息 包含管线状态、shader及资源绑定、渲染命令参数等。 /** * FMeshDrawCommand fully describes a mesh pass draw call, captured just above the RHI. FMeshDrawCommand should contain only data needed to draw. For InitViews payloads, use FVisibleMeshDrawCommand. * FMeshDrawCommands are cached at Primitive AddToScene time for vertex factories that support it (no per-frame or per-view shader binding changes). * Dynamic Instancing operates at the FMeshDrawCommand level for robustness. Adding per-command shader

关于UE4坐标换算涉及到的知识

匿名 (未验证) 提交于 2019-12-03 00:40:02
UE4 Editor Translation Json Translation Rotation Location 3D 2D 就会涉及转换的问题) http://www.360doc.com/content/17/0727/09/31913486_674462117.shtml 齐次坐标的理解(经典) https://blog.csdn.net/janestar/article/details/44244849 平行线是否可以相交 A B 无穷表示 欧氏几何空间(笛卡尔空间) 否 A (∞,∞) [ ] 透视空间 是 B ( x y 0 [ ] N+1 N X,Y -> x,y,w X = x/w;Y=y/w w 为 0 x,y,w x/w,y/w (1, 2, 3), (2, 4, 6) (4, 8, 12) Euclidean point (1/3, 2/3) (1a, 2a, 3a) (1/3, 2/3) 证明两条笛卡尔空间中的两条平行线在透视空间中可以相交 1.AX+BY+C=0 2.AX+BY+D=0 C D C=D x/w,y/w X,Y A(x/w)+B(y/w)+C=0 -> A(x/w)+B(y/w)+D=0 -> Ax+By+Dw=0 x,y,0 x,y,0 , 参考: UE4 坐标系坐标轴旋转轴 https://blog.csdn.net/qq

UE4 行为树资料

匿名 (未验证) 提交于 2019-12-03 00:39:02
Composites 从左往右执行其子节点,直到一个达成,则 Select 达成并返回上层,否则失败并返回上层 从左往右执行其子节点,直到一个失败,则 Sequence 失败并返回上层,否则达成并返回上层 包含一个main task和一个sub tree, main task支持一个 Task 节点,用于执行一个主线行为,sub tree 支持一个行为树,伴随 main task 执行,返回结果是main task的执行结果 Task Task 节点用于执行具体的动作,引擎内置的 Task 常用的有 Wait 、 Move To 、 Is At Location 等等,Task 一般是自行实现的AI具体的行为逻辑,其中的代码与普通蓝图代码一样 Event Receive Execute / Event Receive Execute AI 定义该 Task 的主体逻辑代码,如果没有特殊需求,则必须以 Finish Execute 节点结束,因为只有 Finish Execute 节点才能想上层返回执行结果,否则该 Task 如果不被打断将不会执行完成 如果同时存在 Event Receive Execute 和 Event Receive Execute AI 两个事件,优先执行 Event Receive Execute AI 事件 Event Receive Abort /

ue4同c#通信时的中文乱码问题

匿名 (未验证) 提交于 2019-12-03 00:34:01
本文讨论C#同ue4进行通信,出现的中文乱码情况,其他语言类似。 本文分两种情况讨论, 1.C#向ue4发送string 在C#发送string时,要先区分发送的字符串中是否包含中文,判断方法很简单,如下: private bool IsPureAnsi(string str) { for (int i = 0; i < str.Length; ++i) { if ((int)str[i] > 127) { return false; } } return true; } 当string中不包含中文时,每个字符占1个字节,string前要先发送string的长度,占4个字节,string结束要加'\0'结尾(c传统) 当string中包含中文时,每个字节占用2个字节,格式同上( 注意string长度无需*2,而且string长度要取反 , string结尾需要两个字节的'\0' ) 具体代码如下: public byte[] StringToBytes(string str) { Stream stream = new MemoryStream(); if (this.IsPureAnsi(str)) { byte[] strLenBytes = System.BitConverter.GetBytes(str.Length + 1); stream.Write

深入浅出UE4网络

匿名 (未验证) 提交于 2019-12-03 00:32:02
1.Actor Replication 2.Property Replication 3.Function Call Replication 4.Actor Component Replication 5.Generic Subobject Replication 1.Detailed Actor Replication 1.Actor Replication 2.Property Replication 3.Function Call Replication 1 void AShooterCharacter::FlyDown() 2 { 3 if ( this ->Role < ROLE_Authority) 4 { 5 ServerFlyDown(); 6 } 7 if (!GetCharacterMovement()->IsMovingOnGround() && !GetCharacterMovement()-> IsFalling()) 8 { 9 GetCharacterMovement()-> SetMovementMode(MOVE_Falling); 10 } 11 } UENUM() enum ENetRole { /* * No role at all. */ ROLE_None, /* * Locally simulated proxy of this