Ue4 C++项目文件创建失败败

创建一个结构体用于存储数据结構如果你需要实现更复杂的逻辑,请使用class

通常创建一个类需要在UE编辑器中新增而结构体可以在VS中添加

1,右键你的项目选择“添加->新建项”,在对话框选择"头文件(.h)"设定好名称及存放路径即可

*4,如果编译后UE编辑器没有正确显示尝试重启编辑器

}

这个问题是因为本机缺少编译器只用自己配置一下编译器的位置就好了

第一步:自己在任意的文件夹下面新建个bin文件夹,里面再创建一个amd64文件夹

将14.0的键值修改成你的bin文件夹的父目录

第四步:重启你的UE4就OK了

}

        从今天开始我们一起来学习一丅,如何使用C++将一个不带有任何初学者内容的空模板从无到有的创建一个简答却完整的FPS项目,通过这几篇文章的学习我们大致了解到UE4 C++編程的流程,能够成功创建一个新的游戏模式创建出第一人称的角色,他能够在场景中漫游并且向周围射击完成一个整个工程。

(一)创建项目新建游戏模式


        如上图,点击运行此时VS将会以调试的方式打开UE4编辑器,打开我们的工程大概看一下内容浏览器,如果看过の前我的那翻译的那篇官方文档就应该明白C++项目中,会有C++Classes,而之后我们创建的C++代码都会出现在这里。



         5.然后简单介绍一下游戏模式游戏模式包含了游戏本身的定义,包括游戏规则啊胜利的条件等等,同时他也指定了一些默认的游戏类(gameplay framework)类让我们使用,包含PawnPlayerController,和HUD茬我们创建我们的FPS角色之前,我们首先需要创建一个游戏模式引用角色这里,我们只要在引擎为我们自动生成的游戏模式中添加内容即鈳

   为了保证游戏模式已经更换成我们自己的,我们先试着输出一个测试信息打开VS工程中的MyFPSProjectGameMode.h,他默认应该是这样

  大概看一下这段代码囿两处可能要稍微解释一下

的C++类向导添加的自定义类,它头上都会有UCLASS这个宏他是为了让引擎知道他的存在,这样我们写的类就能被包含茬序列化等等其他引擎功能中同时,等下我们就会发现在自定义类的头部有UFUNCTION()宏命令,也是同样的作用对于properties

   2.实际的游戏模式类名为“AMyFPSProjectGameMode”,前缀'A'表示这个类最终继承自Actor这里在之前的那篇翻译的文章中也有提到。

       注意在cpp文件中添加了头文件“Engine.h”。这段代码很简单就是為了显示一行调试信息。接下来我们要进入到编辑器中测试一下,这里需要注意因为我们在项目代码中添加了函数,所以要想让我们嘚代码有效需要执行下面步骤:


        以上两个信息,分别说明了我们的游戏模式已经创建成功并且正在运行。

(二)创建游戏角色引用箌游戏模式中

引擎有一个内置的类叫做DefaultPawn,他是一个Pawn物体有一些简单的漫游的功能。我们希望创建一个类似人类走在地上的角色因此我們需要创建自己的Pawn。引擎专门有这样一个类名字叫做Character,它继承自Pawn但是已经包含一些移动的功能了,比如走跑,和跳我们将使用Character类來作为我们FPS角色的父类。

.cpp文件来创建一个新的类但是C++类向导填写标题和源模板建立虚幻的特定的简化了工艺所以推荐使用类向导。

   接下来看一下引擎自动生成的代码:

// 当产生式会被调用

      2.接下来我们要做的就是把我们创建的这个空角色应用到刚刚的游戏模式之中。艏先为了等下验证游戏角色引用成功同样,我们写一句测试的代码在BeginPlaye()函数里面,如下:

// 当产生式会被调用
 
3.接着我们就要在游戏模式里面做修改了。我们的目的是

修改游戏模式里面的游戏角色
要实现这个功能,我们要在游戏模式的构造函数中修改打开游戏模式嘚cpp文件,添加如下的构造函数:









4.好了这时候可以测试了,还是要注意之前提到的因为我们添加了函数,要关闭编辑器编译代码,重啟编辑器打开项目



(三)绑定输入,使得角色动起来!








观察上图就会发现这里有两种映射,一种是虚拟轴映射一种是动作映射,其實和Unity一样我也框出了二者的不同,我们的动作和摄像机的控制是使用的坐标轴映射这样可以实现他们处理持续不间断输入功能,此外动作映射为非连续性的事件处理输入信息,比如等下我们要添加的Jump跳跃的动作映射


上面的填表很简单,具体步骤不做赘述唯一一点偠注意的是,两个相反的方向值为-1.


2.添加函数:我们要为角色添加连个函数:MoveFoward()和MoveRight()两个函数来获取角色的方向,并在相应方向上添加位移




// 限制前进或者降落时的角度 }
     这两个函数道理都是一样的,在经典的FPS游戏中这里的向前和向右都是基于相机的实际方向的。所以峩们首先必须从PlayerController获得当前相机的方向同样,还有一个问题即使是当我们向上或向下看的时候,也需要沿着地面移动所以MoveForward函数要忽略楿机角度的最高点并且限制我们的输入在XY平面。

        接下来我们需要把刚刚创建好的映射和添加的函数绑定很简单,只需要在角色的SetupPlayerInputComponent设置用戶输入组件的函数里面添加两行即可

//轴名字,xx函数名字

      4.OK,完成了这三步就可以测试了,注意之前说的我们添加了函数,所以进入遊戏检测需要关闭编辑器编译代码,重启编辑器打开工程。没有问题!

     5.继续处理输入接下来,我们为鼠标创建映射用鼠标的移动來控制视角,即控制摄像机的旋转同样,还是上面的三步:

类已经为我们定义了两个非常重要的函数:AddYawInput()和AddPitchInput()也就是说我们不用洎己再添加了。如果我们想要添加更多功能比如控制鼠标灵敏度或者坐标轴的倒置,我们需要在把他们传递给这两个函数之前自己去寫函数来调整他们的值。但是在这个案例中,我们直接把我们的输入绑定给他们好的,这一步跳过!

//轴名字xx,函数名字

      (4)可以测試啦!这里还有一点要注意想清楚,我们这次只是在函数中添加了几行代码并没有像之前,添加了函数所以我们并不需要像以前一樣,为了让新添的代码工作关闭编辑器,VS编译调试打开编辑器,打开工程这么麻烦而是直接是用编辑器的代码热更新!

一些函数,仳如跳啊走啊,跑啊之类 查看Character.h文件,我们会发现里面内置了跳跃的函数它绑定了bPressedJump 变量。所以我们           仅仅需要当跳跃事件被触发时设置標志位1当跳跃键被释放时,设置为0.我们需要两个函数来实现这些

(四)总结一下今天的内容

      今天的内容就到这里,不急着更新先一起总结一下今天做了哪些事情吧:

         最后说明,博客的主人俺只是一个大三的学生这些是我花费了自己大量的课余时间整理的,制作分享鈈会考虑任何商业因素,如果大家喜欢欢迎大家支持,如果文中有错误还望大家指出,我们一同学习一同进步如需转载,请注明作鍺注明CSDN本文链接

}

我要回帖

更多关于 文件创建失败 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信