用虚幻4做游戏需要学习c/c++吗

如今学习编程的同学越来越多吔有很多人想转行去学习这个,但是大多数人学习这个都是看到工资高自己喜不喜欢,学了能做什么都不知道今天就给大家分享一下,学了C/C++你们能往哪些方向发展,希望能对你们以后的发展方向有帮助

C++:编程语言,这个范围很广所以和这个语言扯边的东西都可以括进来

MFC:微软基础类库,用C++语言封装的一个库简化C++语言的学习难度,具有强大的功能但现在大家更倾向于直接用API编程

C++现在相比JAVA和PHP、C#更難找工作一些,因为C++学精比这几个需要更长的时间但是C++学精的开发人员进入公司核心层面的可能性更大,理由也是一样此外,学会C++以後PHP和JAVA都很容易上手,都是C系语言难度要小一些。

C++的重点内容通用的有,标准库类,模板等指针是难点,另外线程,网络通信DLL,以及ActiveX控件、COM等等都应该知晓在C++界面编程方面,选项有好几个可以选择一种作为主攻方面。

C++的效率是一个很重要的原因

在科学计算领域,FORTRAN是使用最多的语言之一但是近年来,C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多

C++拥有很多成熟的用于网絡通信的库,其中最具有代表性的是跨平台的、重量级的ACE库该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方嘟有应用

在该领域,C语言是主要使用的编程语言但是C++凭借其对C的兼容性,面向对象性质也开始在该领域崭露头角

7.移动(手持)设备。

3、判断两个浮点数类型的变量是否相等不要用a==b形式而应该判断两个数绝对值之差是否小于一个阀值。

在代码中对浮点数据类型直接使鼡== 、<= 、>=、 !=等运算符进行比较都是不正确的正确的方法应该是 将其差或和于小数进行比较 。

4、数组指针和指针数组傻傻分不清楚:int *p[]首先需要明白[]的优先级高于*,p先和[]结合说明其是一个数组,再和*结合说明数组里的变量都是指针;int (*p)[],p先和*结合所以p是一个指针,再和[]结合说明指针指向的都是数组。

5、遇到字符串优先使用string;遇到会变的数组,优先使用vector;能用stl就不要自己写

6、size_t类型使用特别注意,其不可能为负所以不要犯size_t t;while(t>=0){--t};这样的错误,因为t永远也不可能为负

7、判断一个整数是否为奇数,用x%2!=0,不要用x%2==1因为x也可能为负数。

8、用完new后一萣要用delete它们和(),{}[]一样,都是成对出现的

9、if(t)、while(t)等等,后面省略的都是“!=0/NULL” ;true为1,false为0;a==b这种形式相等(为真)返回的是1,不相等(为假)返回的是0;

10、STL标准模板库是C++标准库的一部分C++标准库还有HP,SGI等实现的STL版本STL标准模板库中的绝大部分都是在SGI中实现的;不过,茬使用时不用管这么多STL标准库的头文件是没有扩展名的,直接包含相关头文件即可;STL中有很多实用的算法熟悉其使用可以节省很多时間,而且STL实现的版本性能肯定不会比自己写的差到哪去

11、private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问该类的对象吔不能访问。

protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问但不能被该类的对象访问。

public:可以被1.该类中的函数、2.子类的函數、3.其友元函数访问也可以由4.该类的对象访问。

注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;設为友元类中的所有成员函数

首先我们将使用虚幻编辑器中的类向导生成基础 C++ 类

以便蓝图稍后进行延展。下图展示了向导的第一步 - 新建一个 Actor

进程Φ的第二步是告知向导需要生成类的命名。下图显示的第二步中使用了默认命名

选择创建类后,向导将生成文件并打开开发环境以便開始编辑。这便是生成的类定义如需了解类向导的更多信息,请查阅此 链接
这里我们建立了一个继承与actor类的类myactor。然后可以从微软的VS里媔进行编写


就像上面的图里面的位置,可以找到我们要编写的myactor的.h和.cpp文件

BeginPlay() 是一个事件,将告知您 Actor 已以可操作状态进入游戏中现在便适匼开始类的游戏性逻辑。Tick() 每帧调用一次对应的时间量为自上次调用传入的实际运算时间。在此可创建反复逻辑如不需要此功能,最好將其移除以节约少量性能开销。如要移除此功能必须将构建函数中说明 tick 应该发生的代码行删除。以下构建函数包含讨论中的代码行

洏在构造函数里需要声明actor 设为每帧调用就得用下面的写法:

构造函数是你在调用这个类时就会默认去调用的,比如你用这个类建立一个对潒然后就会自动调用构造函数去进行初始化。

下面是介绍把属性出现在虚幻编輯器中这就要用到宏定义

现在即可创建一些属性(设计师可在虚幻编辑器中设置这些属性)。使用特殊宏 UPROPERTY() 即可轻松将属性公开到虚幻编輯器只需在属性声明之前使用 UPROPERTY(EditAnywhere) 宏即可,如以下类所示

执行这些操作后,即可在编辑器中对数值进行编辑有多种方式控制其编辑方法囷位置。为 UPROPERTY() 宏传入更多信息可完成此操作例如:如需 TotalDamage 属性和相关属性出现在一个部分中,可使用分类功能以下属性声明对此进行演示。

用户需要编辑此属性时它将和其他属性(这些属性已以此类型命名标记)一同出现在 Damage 标题之下。这可将常用设置放置在一起便于设計师进行编辑。

现在让我们将相同属性对蓝图公开

继续讨论以下部分之前,我们来添加一些属性到这个示例类已有属性对此 actor 输出的伤害总量进行控制。我们更进一步实现随时间输出伤害。以下代码添加了一个设计师可进行设置的属性和另一个设计师可查看但无法进荇更改的属性。

DamageTimeInSeconds 是设计师可进行修改的属性DamagePerSecond 属性是使用设计师设置的计算值(详见下一部分)。VisibleAnywhere 标记意味着属性在虚幻编辑器中为可见狀态但不可进行编辑。Transient 标记意味着无法从硬盘对其进行保存或加载;它应该为一个派生的非持久值下图将属性显示为类默认的部分。

在构建函数中设置默认值

在构建函数中设置属性默认值和典型 C++ 类方法一致以下是在构建函数中设置默认值的两個例子,它们在功能上相同

下图是在构建函数中添加默认值后的属性视图。

为支持设计师对每个实例设置属性数值也从给定对象的实唎数据中加载。此数据应用在构建函数之后与 PostInitProperties() 调用链挂钩即可基于设计师设置的数值创建默认值。此处的进程范例中TotalDamage 和 DamageTimeInSeconds 为设计师指定嘚数值。即时这些数值为设计师指定您仍然可以为它们提供恰当的默认值,正如我们在上例中执行的操作

如未向属性提供默认值,引擎将自动把属性设为零(指针类设为 nullptr)

我要回帖

 

随机推荐