找回密码
 立即注册
查看: 530|回复: 0

[译文][新手必读]Unreal Engine 4 C++入门教程(上)

[复制链接]
发表于 2021-4-20 09:23 | 显示全部楼层 |阅读模式
原文|《Unreal Engine 4 C++ Tutorial》
作者|Tommy Tran Feb 6 2018  | 翻译 开发游戏的老王
阅读时长|25分钟 内容难度|入门
在本教程中,你将学会如何创建C++类并且对编辑器暴露变量和函数
在Unreal Engine 4中用蓝图创建游戏逻辑(gameplay)是非常流行的方式。然而,如果你是位资深码农或者偏爱写代码,那么你应该用C++!使用C++的话你甚至还可以修改引擎或开发自己的插件!
在本教程中,我们将会学到:
    创建C++类添加组件(component)并将它们暴露给蓝图基于C++类创建蓝图类添加变量并使它们在蓝图中可编辑将轴(axis)和事件(action)与函数绑定在蓝图中重写C++函数将重叠事件(overlap event)与函数绑定
注意,本文并非一个C++教程,而是针对在Unreal Engine环境中如何使用C++的教程。
开始吧

译者注: 本教程提供了范例工程,如果需要可以到原文网站免费注册并下载。
如果你还没有安装Visual Studio,请按照Epic官网引导安装并设置Visual Studio。(尽管你可以使用其它的IDE,但本教程将会使用Visual Studio,因为Unreal Engine和它有良好的兼容性)
下载并解压范例工程。在项目文件夹内打开 CoinCollector.uproject。如果出现重新构建模块(rebuild modules)的提示,点击Yes


完成之后,我们可以看到如下场景:


本教程中,我们将创建一个由玩家控制的球来收集金币。在先前的教程中,我们一直在蓝图里创建由玩家控制的角色。本教程中,我们用C++创建一个!
创建C++类

在内容浏览器(Content Browser)选择Add New\New C++ Class 来创建C++类。




这样C++类创建向导将被打开。首先,我们要选择它的基类。由于这个类需要被玩家控制,我们需要Pawn作为它的基类。选择Pawn点击Next


在下一个界面,我们可以为.h 和 .cpp文件指定名字和路径。将Name改为BasePlayer 点击Create Class




引擎会为我们创建文件并编译项目。编译之后,引擎会为我们打开Visual Studio。如果BasePlayer.cppBasePlayer.h没打开,请到Solution Explorer中Games\CoinCollector\Source\CoinCollector 目录下将它们打开。




如果我们把(模型)资源移动到其它文件夹,我们的蓝图不会崩溃,然而在C++中,我们必须修改每一处引用该资源的代码。
在蓝图中设置完网格和升降臂的旋转,我们将创建一个基于BasePlayer的蓝图类。
注意:  常用的工作流程是在C++中创建基类(base class)然后创建蓝图子类(subclass)。这种方式便于诸如美工和策划等角色编辑类。
创建子类

在引擎中,找到Blueprints文件夹,并创建蓝图类(Blueprint Class),展开All Classes 部分,并搜索 BasePlayer,选择 BasePlayer并点击选择。




将蓝图类更名为BP_Player 并打开。
首先,我们要设置网格模型。选择Mesh组件并将它的Static Mesh 设为SM_Sphere




接下来,我们将设置升降臂的旋转和长度。我们的游戏是一个俯视角游戏,因此摄像机要在角色的上方。
选择SpringArm组件将Rotation设为(0, -50, 0)。这样旋转升降臂使摄像机自顶向下朝向网格。




由于升降臂使网格的子组件,当球旋转时它也会旋转。




我们要将升降臂的旋转设为absolute以修复这个问题。点击Rotation旁的箭头,并选择World




然后将Target Arm Length设为1000。这样摄像机将会被放置于距网格1000个单位远的位置。




接下来,我们将把默认的Pawn类设为我们的Pawn。点击编译,然后回到编辑器。打开World Settings 并将Default Pawn 设为BP_Player




点击Play,来看看我们游戏中的Pawn。


接下来是添加让角色移动的函数。


下半部分请见

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 00:45 , Processed in 0.088727 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表