UE4 C++
文章平均质量分 50
Forest_1010
笔记记笔记
展开
-
UE4笔记——模块机制
01 模块简介一个文件夹对应一个模块。一个模块中包含以下内容:public文件夹private文件夹.build.cs文件不同模块之间的互相调用并不是很方便,只有通过xxxxx._API宏暴露的类和成员函数才能够被其它模块访问。02 创建自己的模块快速创建模块创建标准的模块创建模块构建文件创建模块的头文件和源文件创建模块的预编译文件03 引入模块对于游戏模式而言,引入当前模块的方式是游戏工程目录下的souce文件夹中,找到工程名.Target.cs文件中原创 2021-01-03 13:14:49 · 425 阅读 · 0 评论 -
UE4委托
01 委托(代理)委托,又称代理,本质是一个特殊类的对象,它内部可以储存(一个或多个)函数指针、调用参数和返回值。委托的作用如同函数指针,但它更安全(支持编译期类型检查),而且更易于使用。使用委托,通过对委托的一个执行就可以调用到对象的函数。02 概念代理:在你不知道对象是什么的时候,也可以执行对象中的函数,delegate代理为两个对象之间建立起了通信,当我需要调用对象中的成员时,可我们不知道对象是谁,这时只需要打电话给这个中介delegate即可。委托的功能类似与蓝图中的发报机。代理主要原创 2020-12-21 01:53:11 · 1312 阅读 · 0 评论 -
UE4全反射零耦合笔记——UMG与C++交互
1,创建Widget//创建Widget方法一:CreateWidget//UXXXWidgetClass是UClassUXXXWidget* XWidget = CreateWidget< UXXXWidget >(GetWorld(),UXXXWidgetClass);//创建Widget方法二 : 通过WidgetThree创建组件,只能在Widget内部创建UImage* DynImage = WidgetTree->ConstructWidget<UImage&原创 2020-12-21 01:46:17 · 647 阅读 · 0 评论 -
UE4全反射零耦合笔记——获取场景对象的方法
01 使用迭代器获取for (TActorIterator<AActor> It(GetWorld()); It; ++It)02 使用静态方法获取TArray<AActor*> ActArray;UGameplayStatics::GetAllActorsOfClass(GetWorld(), AFWCharacter::StaticClass(), ActArray);原创 2020-12-21 01:42:14 · 649 阅读 · 0 评论 -
UE4全反射零耦合笔记——蓝图与C++交互
创建新的C++类添加到文件Public/GameFrame中:FWGameModeFWGameInstanceFWPlayerControllerFWCharacter添加到文件Public/Common中:FWCommon(Object类:公共的类)在FWCommon中添加Debug函数FWCommon.h#pragma once#include “CoreMinimal.h”#include “UObject/NoExportTypes.h”#include “En.原创 2020-12-21 01:38:14 · 731 阅读 · 6 评论 -
UE4笔记 Object/Actor迭代器
01 Object迭代器对象迭代器是非常有用的工具,可用来迭代特定 UObject 类型及其子类的所有实例。// 查找所有当前UObject实例for (TObjectIterator<UObject> It; It; ++It){ UObject* CurrentObject = *It; UE_LOG(LogTemp, Log, TEXT("Found UObject named:%s"), *CurrentObject->GetName());}您可以通原创 2020-12-17 21:42:50 · 1334 阅读 · 0 评论 -
UE4笔记1
在最最基本的层面上,任意可以被放置到关卡中的游戏物体都是一个 Actor。所有的 Actor 都是继承于 AActor 类,该类是所有可生成的游戏对象的基类。在某种逻辑层面,Actor 可以被认为维系了一些特殊 Object 的容器,这些特殊 Object 被称为组件(Component)。比如,一个 CameraActor 会包含一个摄像机组件(CameraComponent)。一个摄像机所具有的功能,比如视野,都是在 CameraComponent 中实现。同时也就是说其他 Actor 同样可以包含原创 2020-12-17 21:14:26 · 150 阅读 · 0 评论 -
UE4 使用UMG
目的:UI布局的划分思想UI的制作结构实现:登陆界面准备:创建空项目了解项目目录结构导入获得的资源UI布局的构建UI功能(蓝图)为UI添加动画效果了解UMG编辑器制作第一个UI运行UI...原创 2020-12-16 23:54:45 · 794 阅读 · 0 评论 -
FastBuild编译环境
下载两个文件官网下载设置环境变量把下载好的FastBuild-Windows-x64-v1.00的位置设置好环境变量,如下:打开cmd,输入命令FBuild.exe,返回如下图则代表环境搭建成功!编译FastBuild的源代码步骤如下:不幸的是出现了一些问题:问题1. Unable to auto-detect VS2019 - please specify installation manually .D:\FastBuild\fastbuild-src-v1...原创 2020-12-15 23:59:43 · 2411 阅读 · 0 评论 -
UE4中Actor与AActor
刚接触UE4,可能理不清楚其中各种各样的类以及它们之间的关系,比如,我们新建一个继承于Actor的类,然后我们在看代码的时候发现public AActor,这是因为Actor是可以附加到场景中的,所以自动附加了一个A。同样的,我们创建一个继承于ActorComponent的类时,也会发现public UActorComponent,这是因为Actor组件是不能单独放置到场景中的,所以就自动加了一个U。总之就是:以A开头的都是可以附加到场景中的,以U开头的都是组件,不能不能单独附加到场景中。...原创 2020-12-13 15:16:48 · 1418 阅读 · 0 评论 -
UE4实现漂浮并旋转
// 版权所有 1998-2019 Epic Games, Inc。保留所有权利。#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "FloatingActor.generated.h"UCLASS()class QUICKSTART_API AFloatingActor : public AActor{ GENERATED_BODY()public: // 设置原创 2020-12-13 02:43:03 · 1787 阅读 · 1 评论 -
UE4 UMG入门——创建和显示游戏菜单
01 设置UMGUMG 是依赖于一些模块的,需要添加这些模块到"工程名.Build.cs"中。在"HowTo_UMG.Build.CS",添加"UMG"到包括了公共模块的列表,并把"Slate"和"SlateCore"添加到包含了私有模块的列表中。PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });然后取消对如下行的注释:Private原创 2020-12-13 02:02:07 · 1202 阅读 · 0 评论 -
UE4 玩家控制的摄像机
01 游戏控制的摄像机使用一个Actor控制一个摄像机Actor02 玩家控制的摄像机设置一个pawn类,并且设置该pawn默认受控;// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Pawn.h"#include "GameFrameWork/SpringArmC原创 2020-12-13 01:33:33 · 1390 阅读 · 0 评论 -
UE4基本数据类型
01 数字类型bool:代表布尔值 (永远不要假设布尔值的大小) BOOL 将不会进行编译TCHAR:代表字符型(永远不要假设TCHAR的大小)uint8:代表无符号字节(占1个字节)int8:代表有符号的字节(占1个字节)uint16:代表无符号"短整型" (占2 个字节)int16:代表有符号"短整型" (占2 个字节)uint32:代表无符号整型(占4字节)int32:代表带符号整型(占4字节)uint64:代表无符号"四字" (8个字节)int64:代表有符号"四字"(8个字节原创 2020-12-06 11:20:22 · 3505 阅读 · 0 评论 -
UE4对象
01 对象的产生纯C++类型(F开头):使用new来创建对象继承自UObject(以U开头):通过NewObject模板函数来创建其实例对象MyObject = NewObject<UMyObject>();//返回一个指向你的类的指针继承自Actor(以A开头):通过SpawnActor函数来创建对象如果你的类继承自Actor,需要通过UWorld对象的ApawnActor函数来创建对象,UWorld对象可以通过GetWorld()获得。//创建AActor派生类对象不要用New原创 2020-12-06 11:14:11 · 509 阅读 · 0 评论 -
UE4反射和垃圾回收
01 反射什么是反射反射是程序在运行时检查自身,将参与反射的数据(变量,类,函数等等)暴露给蓝图,允许运行时去调用。反射的使用宏就是用来帮助建立反射的,Unreal Header Tool(UHT)是建立反射的工具,它会扫描头文件。例如:UE4中只要在一个函数的前面加上UFUNCTION()宏,然后在括号里面加上BlueprintCallable就可以在编辑器里面调用。为了标记一个头文件包含反射类型,需要添加一个头文件"XXX.generate.h",必须放在头文件的尾部,该文件一般位于“P原创 2020-12-06 11:08:03 · 704 阅读 · 0 评论 -
UE4从C++到蓝图
01 PROPERTY宏当我们需要将一个UObject的子类的成员变量注册到蓝图中时,只需要借助UPROPERTY宏即可。先创建一个子类,在.h文件的类中添加如下代码:UPROPERTY(EditAnywhere,Category="mytest")int32 test_time;然后可以在.cpp文件的构造函数中设置test_time的初值:test_time=3;最后,在虚幻编辑器中就可以看到该属性。属性说明符UPROPERTY的括号中是属性说明符,以控制属性与引擎和编辑器诸多方面原创 2020-12-06 10:36:28 · 1098 阅读 · 0 评论 -
UE4创建一个默认的c++类详解
01 创建一个Actor子类,默认生成代码如下://FirstActor.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "FirstActor.generated.h"UCLASS()class QUICKSTART_API AFirstActor : public AActor{ GENERATED_BODY()public: // 设置此Actor属性原创 2020-12-04 00:34:30 · 774 阅读 · 0 评论 -
UE4中基础的类及其之间的关系
想更详细深入的了解请点击这里01 UObjectUObject 是所有Object的基类(不是所有类的基类),包含各类功能,诸如垃圾回收、通过元数据(UProperty)将变量公开给编辑器,以及保存和加载时的序列化功能。UCLASS宏可用于标记从UObject派生的类,使UObject处理系统识别到它们。02 AActorAActor是所有Actor的基础类,AActor中有一个RootComponent成员,用来保存组件树中的顶级组件;一个Actor若想被放进level中,就必须实原创 2020-12-02 22:09:35 · 1731 阅读 · 0 评论 -
UE4命名规则
T:模版类以T作为前缀,比如TArray,TMap,TSetU:UObject派生类都以U前缀 (继承自UObject,但不继承自Actor)A:AActor派生类都以A前缀S:Widget派生类都以S前缀I:抽象接口以I前缀E:枚举以E开头b:bool变量以b前缀,如bPendingDestructionF:其他的大部分以F开头,如FString,FName (纯C++类)typedef的以原型名前缀为准,如typedef TArray FArrayOfMyTypes;...原创 2020-11-28 14:34:01 · 876 阅读 · 0 评论 -
UE4项目文件构成
.vs:当前项目自动生成的解决方案,不能删;Binaries:存放编译生成的结果二进制文件,C++项目热加载的时候自动产生的文件,是可以删除的,而且在某些情况下必须删除,比如删除一个C++文件的时候;Config:配置文件,不能删;Content:所有资源和蓝图都放在该目录中;Intermediate:存放一些临时生成的文件,是可以删除的;Saved:存储自动保存文件,其他配置文件,日志文件,引擎崩溃日志,硬件信息,烘培信息数据等;一旦引擎崩溃或者操作有误,可以通过Log文件快速定义错误信息,所.原创 2020-11-28 14:20:37 · 412 阅读 · 2 评论 -
UE4 C++开篇
转载https://zhuanlan.zhihu.com/p/22814051?refer=gameengine学习资料UnrealEngine官方Github地址虽说官方已经提供了简便的launcher,但还是推荐自己自己Clone源码编译,也方便时不时的Debug和查看源码知道Why。而且有些时候其实是直接更改引擎源码来得更为方便便利的。Clone下来之后先点 Setup.bat再点 GenerateProjectFiles.bat ,然后打开UE4.sln,按照默认选项Development原创 2020-11-28 14:12:58 · 145 阅读 · 0 评论