UE4课堂笔记——《UE4C++游戏开发入门教程!》第一期开场,C++必须了解小知识

这篇教程介绍了UE4 C++游戏开发的入门步骤,包括环境配置,如安装UE4和Visual Studio,以及C++基础知识,如指针、类、虚函数和构造函数。教程强调了C++与UE4引擎的结合,特别是蓝图类和C++类的关系,以及如何通过C++创建和编辑游戏项目。同时,讲解了C++中头文件、源文件、声明与定义的区别,以及模板和访问修饰符的使用。
摘要由CSDN通过智能技术生成

《UE4C++游戏开发入门教程!》第一期

UE4C++游戏开发入门教程!(第一期)

学习ue4 c++可以更好理解ue4,但需要已经了解或掌握至少以下两点:

  1. 已有编程经验
  2. 了解蓝图

所以可以先学一下蓝图类的教程,对ue4的整体有个了解后再来学习c++。

环境安装

ue4编写c++,除了安装ue4外,还需要安装visual studio 2019或者安装visual studio code等开发环境。首次在ue4中选择创建c++类时,会提示安装visual studio,你可以选择vs2019 commit安装,安装完成后配置参考:
设置虚幻引擎到Visual Studio工作流前
Unreal Engine4 - visual studio 智能提示
vs安装提示:
UnrealVS扩展

ue4自带扩展,位置比如:C:\Program Files\Epic Games\UE_4.25\Engine\Extras\UnrealVS\VS2019\UnrealVS.vsix

创建一个c++项目

UE4C++游戏开发入门教程!(第一期)

  1. 随时使用ue4上的编译compile进行热编译,在老版本的ue4中,即便vs中进行了编译,在ue4里仍旧要进行一次编译
    每次修改完c++就选择一下编译。
    在这里插入图片描述

  2. c++代码里的.h.cpp分别用于定义和实现
    在这里插入图片描述

  3. 创建的c++类,默认方法与蓝图类中的默认事件一一对应
    在这里插入图片描述

  4. 蓝图类中的construction script相当于c++中的构造函数

必须了解的C++小知识

这些小知识的主要目的是为了让初学者能明白代码和虚幻引擎间的关系,真正深入了解还是要静下心好好学习。

1. 通用的概念

C++ 教程

指针、条件语句、变量、常量、函数、类等等是编程最基本的概念,这些内容请先行了解。

2. include包含文件

C++中的include 用法

  • <> 表示引入c++自带的文件
  • "" 表示引入自定义的文件
#include <iostream.h>
#include "SphereBase.generated.h"

3. .h头文件,.cpp源文件

C++头文件定义类的方法

  • .h 头文件:head缩写,作用相当于书的目录
  • .cpp 源文件:C++,即C plus plus 缩写,作用相当于书的具体内容

4. 声明定义实现三个术语

C/C++头文件与变量的声明和定义

  • 头文件里一般是“声明”,只用来说明类型和名字;
  • 源文件里是“定义”,用来设定变量和函数、分配存储空间等;
  • 实现”,就是正儿八经调用、使用这个类了。

5. 父类、子类、基类、派生类、继承

C++ | 继承(基类,父类,超类),(派生类,子类)

看字面意思就知道是层层递进的关系,父生子,父就是基,子就是派生,子继承了父的属性、方法等等。

对于UE4而言,虚幻引擎编了一堆游戏开发需要的基类,开发人员以基类的规则为参照,写自己的子类。

super是父类别名《UE4 C++ Super类型

6. 虚函数

C++虚函数详解

在函数前加上virtual就变成了虚函数,其目的是为了允许用基类的指针来调用子类的这个函数,把它理解成为了提高执行效率就行了。

如果纯虚函数只做了声明,没有定义,那么就会报错。

7. 构造函数 & 析构函数

c++构造函数详解(傻子都能看懂)
c++ 构造函数详解

就是为了初始化的,写法是函数名与类名相同,当然,一个类里可以有多个构造函数,调用的时候根据参数数量写就可以了。
有了构造这种用来初始化的函数,那么就有负责撤销和清理工作的析构函数。

8. 关键字override

C ++ 学习——关键字override
C++11 override

主要目的就是防止忘记重写虚函数。

而我们写的派生类往往都是基于虚幻引擎的基类,那么用上关键字override来尽可能减少出错。

比如派生类中写错了虚函数名,又正好没有override,那么这个写错名字的函数就作为新的函数使用了,而不是基类要求的那个函数

9. 宏

UE4入门-常见的宏-UCLASS

因为我们是进行UE4的C++开发,很多地方利用宏可以将c++和虚幻引擎更好更快地结合。

10. 模板

利用模板将相似功能的函数或类用在多个不同类型的地方,也就是编写函数的时候不再需要考虑类型,增强函数的重用性。

11. publicprotectprivate的用法

C++中关于public、protect、private的访问权限控制

  • public:外部代码可以随意访问
  • protect:外部代码无法通过该子类访问基类中的public
  • private:告诉编译器从基类继承的每一个成员都当成private,即只有这个子类可以访问

代码实例:

在后面几课将会遇到下面类似的代码,这样你就都能看懂是啥东西了。

格式为c++规定,比如继承用:、定义类函数用::

头文件.h
UCLASS()
// ASphereBase派生类继承自APawn基类
class TEST1_API ASphereBase : public APawn
{
...
public:
	// 声明构造函数,用于初始化
	ASphereBase();

	// 利用宏UPROPERTY将变量A公开到虚幻引擎中
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "PropertyTest1")
		// 声明变量A
		float A;
	// 利用宏UFUNCTION将函数InputText公开到虚幻引擎中
	UFUNCTION(BlueprintCallable)
		// 声明函数InputText
		void InputText(int32 num);
	
protected:
	// 声明一个纯虚函数,且要求必须重写覆盖
	virtual void BeginPlay() override;
...
};
源文件.cpp
// 引入头文件
#include "SphereBase.h"

// 定义ASphereBase类的构造函数
ASphereBase::ASphereBase()
{
	// 初始化属性的值为true
	PrimaryActorTick.bCanEverTick = true;

	// 使用模板函数CreateDefaultSubobject,显示转换形参类型为UStaticMeshComponent
	SphereMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SphereBaseCustom"));
	// 调用方法
	SphereMesh->SetSimulatePhysics(true);
}

// 定义InputText函数
void ASphereBase::InputText(int32 num)
{
	// 调用虚幻引擎自带的方法
	GEngine->AddOnScreenDebugMessage(-1, 5, FColor::White, FString::FromInt(num));
}

// 定义ASphereBase类的BeginPlay函数,纯虚函数因为这里被定义了,所以编译的时候就不会出错了
void ASphereBase::BeginPlay()
{
	// super表示父类,调用父类的方法
	Super::BeginPlay();	
}
...

在这里插入图片描述

【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值