虚幻引擎C++开发学习(一)

文章内容来自于Udemy课程。第一章为设置C++和虚幻环境,直接略过。

第二章内容为一个小游戏,名字叫Triple X,是个简单的数字益智游戏。它基于三个未知数字。你将侵入某种计算机锁。游戏的想法是找到一个有效的三个数字组合。

比如关卡1:3个数字相加为8,相乘为18。

这部分很简单,我们直接略过。

第三章内容为The Bull Cow Project,是一个terminal game, but with unreal,我们从部分开始记录:

一、游戏内容介绍

这是一个猜词游戏,为了使他更加简单,我们想猜测isogram,an isogram is simply any word that doesn't have any repeating letters。它是一个没有重复字母的单词(例如ambidextrously),或者更广泛地说,是一个字母出现相同次数的单词。下面是它的定义:

Isogram - Definition and Examples in Englishhttps://www.thoughtco.com/isogram-word-play-term-1691199

A letter in a guess and in the right place is a bull and a letter in a guess but in the wrong place

is a cow. And of course, if you guess a letter that isn't in our head and word you won't get any bulls or any cows

游戏本身的机制,隐藏的词将从一个词列表中提取出来,游戏会让我们知道我们拥有玩家会猜测的lives。

二、游戏基本设置和基本知识

1、我们下载对应的压缩包文件

会给出警告,关于版本不同的警告,问是否要rebuild,这里选择是就可以了。

其次需要注意的是,我们进入引擎后,需要点击上方的编译,来编译C++代码:

 关于互动,我们需要进入游戏后,按下tab键,这样可以在游戏中的木板上输入对应单词。

这里关于游戏引擎的一些操作介绍,我们就暂时略过,和之前的内容重复较多。

2、关于生成编译器代码

我们可以在偏好设置中,修改是VS还是VS code作为启动:

 这样会在文件目录中产生下面这个文件:

 然后我们可以在vs code中打开项目,但是会有如下的报错:

 但这是因为课程的版本和我们版本使用不同造成的。我们可以进入下面的链接,下载vsix文件

https://gist.github.com/boocs/f63a4878156295b6e854cac68672f305#Extension-Settings

然后按照文章中步骤进行操作就可以了,别忘了在设置中,选中这两个:

 这样的话,现在就没有之前的报错了,我们可以继续进行后续的任务。

3 Actor和组件

Actor 可以被视为一个容器,可以附加许多组件。

我们可以在C++类中,找到我们的组件,可以将它添加到我们的terminal中:

关于terminal的解释:

而在这个项目中使用的类比思想是一个老式的终端,你输入两个,它的字符出现在屏幕上,然后游戏以不同的东西响应。

所以这里的想法是,本节中将对这些墨盒(cartridges)之一进行编程,然后从理论上讲,然后将其插入我们的终端。

那么怎么做?

我们首先选中这个终端:

 我们可以直接在添加组件中搜索,也可以在列表中拖入:

这样我们进入vs code的对应文件中,我们可以添加代码(添加一行输出):

 然后我们进入到游戏中的终端,就可以看到输出:

在这里需要注意的是,有的时候vs code会进行报错,但是在ue里的编译是正常的。

This declartion has no storage class or type specifier.

注意到OnInput函数中没有语句,我们可以添加ClearScreen(),在输入时清空屏幕。

4、Unreal has its Own c++ type

这一部分主要讲text macro(文本宏)

https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/例如Fstring:

Unreal TEXT FText,FName,FString 浅谈 - 不三周助 - 博客园

也可以看看官方文档字符编码的部分:

https://docs.unrealengine.com/4.27/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/CharacterEncoding/https://docs.unrealengine.com/4.27/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/CharacterEncoding/

需要知道的是,我们每次有一个string,我们都需要以下面的方式:

FString HiddenWorld = TEXT("cake");

加上TEXT,这样虚幻可以正确编码。

同样的,对于PrintLine也可以按照下面的例子:

PrintLine(TEXT("Hi There!"));

关于game loop

  • Process the player will go through.
  • There will usually be many loops within a largergame
  • What is our players experience from the moment they interact with the terminal.

在coding之前,先画流程草图。

5 对于编译时间长(10s甚至更多)

进入Message log-Compile log,查看是否有出现编译时长突然变化的情况。

如果有,回到VS code中,到目录栏下的UE-engine-Binaries-Win64-UnrealHeaderTool.target

可以在结尾加入一个空格然后重新保存,这样重新编译速度会变快。

6 Structure of a String

  • A string is a group of characters.
  • Strings are varying in length.
  • A string is an Array of Characters.
  • An FString is a TArray of TCHAR.

7 对词表添加TEXT(“”)

我们选中所有的单词,然后再工具栏的上方,选择,在行尾添加光标。

这样我们可以先输入”),然后删除最后一行的逗号。

对于前面的部分,我们可以再次添加光标后,用Home键移动光标

8 Loading Words At Runtime

单个.h文件中有大量的单词会影响编译时间。我们可以使用FFileHelper::LoadFileToStringArray将单词加载到数组中。

我们在Txt中输入单词表,然后再代码中创建一个TArray<FString>成员变量。

FPaths::ProjectContentDir() 将返回内容目录的绝对路径

const FString WordListPath = FPaths::ProjectContentDir() / TEXT("WordLists/HiddenWordList.txt");
FFileHelper::LoadFileToStringArray(Words, *WordListPath);

最后:

为了使其在打包游戏中工作,需要将 WordLists 目录添加到要打包在打包下的项目设置中的附加非资产目录列表中。 

 9 TArray Functions

.Add() New element to the end of the array

.Emplace() New element to the end of the array

在FString时,最好使用Emplace

.Remove() Removes matching elements

.RemoveAt()Removes element at index

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14987.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚幻引擎的控制台命令(长期更新)

小标题前如果标注具体虚幻的版本号&#xff0c;则仅在特定版本中有效 若没标注&#xff0c;则代表全版本通用 局内 【UE5】世界分区&#xff08;World Partition&#xff09; 显示世界分区加载网格 2D&3D wp.Runtime.ToggleDrawRuntimeHash3D 3D显示世界分区的加载网格 …

下载虚幻引擎提示错误代码MD-DL

先放结论&#xff1a;因为已经下载过UE4版本的引擎&#xff0c;再下载其它版本引擎的时候默认会放到UE4版本的引擎的同级目录下&#xff0c;改下路径就行了。 把UE4改成UE5就好了&#xff0c;把他俩分开。UE4是我自己之前分给4.26版本的文件夹。 我在下载时遇到了这个问题&am…

虚幻商城模型转MetaHuman

一、导入虚幻商城的模型到UE 1.去虚幻商城下载一个人物模型,这里以SchoolGirl为例 2.导入UE,并找到模型,这里是SkeletalMesh 二、启动MetaHuman插件 1.通过Edit->Plugins启用MetaHuman和MetaHumanSDK插件,这里MetaHuman插件是用于创建MetaHuman的,MetaHumanSDK插件…

Unreal虚幻源代码的编译

很多小伙伴在做开发的时候都用Epic管理的UE引擎&#xff0c;可是在企业实际开发中&#xff0c;需要用到虚幻的源代码。UE和Unity相比的优势也是开源&#xff0c;所以使用引擎的源码很有必要&#xff0c;便于了解底层和修改底层逻辑很有帮助。很多小伙伴不清楚如何编译&#xff…

虚幻4基础知识——编辑器

一、前言 最近将虚幻4的知识点进行梳理了一遍&#xff0c;算作是初学者的角度学习该引擎时遇到的问题的汇总。包括UI、编辑器以及蓝图部分&#xff0c;不过都是挑了我自己需要记录的东西&#xff0c;没有涵盖所有内容。 二、编辑器知识 2.1、视口和模式面板 视口是观察和编辑…

虚幻引擎外部模型及动画导入

运行效果&#xff1a; 首先在底部素材文件加下右键选择导入 导入后选中小白人&#xff0c;右侧菜单栏选中细节&#xff0c;找到网格体&#xff0c;选择你要渲染的人物 动画绑定&#xff0c;在右侧找到动画类&#xff0c;选择要导入的动画

虚幻批量修改贴图

修改之前的属性为512*512. 批量选择贴图&#xff0c;右键。 找到Asset Actions&#xff08;资产操作&#xff09;的Bulk Edit via Property Materix&#xff08;批量编辑属性材料&#xff09; 选中所有后输入Bias。 修改LOD Bias的值&#xff08;这里我改为256&#xff09; 再打…

虚幻4 光照需要重建

在项目中添加新的物体时出现 光照需要重建的提示 解决办法1&#xff1a; 构建光照 解决方法2&#xff1a; 在世界大纲中搜索light&#xff0c;将所有光照设置成实时的

虚幻基础之编译

虽然不像Unity3D那样以多平台支持作为宣传点&#xff0c;虚幻本身依然是多平台支持的&#xff0c;如Windows&#xff0c;IOS&#xff0c;安卓等等。同时为了应对开发和部署的需要&#xff0c;编译的配置也是一个花样繁多的过程。 本篇文章就初步得从概念和工具的角度对虚幻的编…

全面了解虚幻引擎 5

Incredibuild 与 Epic 合作密切&#xff0c;并与虚幻引擎深度集成&#xff0c;因此对于虚幻引擎 5 的发布&#xff0c;我们也是既期待又兴奋。不得不说&#xff0c;虚幻引擎 5 没有辜负我们的期待&#xff0c;在技术上达到了真正的“虚幻”级别&#xff01; 虚幻引擎 4 的进步…

虚幻引擎5安装踩坑记录

1、The required library hostfxr. dll could not be found. 通过以下链接下载并安装 Download .NET Core 3.1 (Linux, macOS, and Windows) 以我的安装路径为例&#xff0c;将以下hostfxr.dll &#xff08;也就是报错的未找到文件&#xff09;复制到虚幻引擎对应的文件夹中…

虚幻浏览器插件 中文输入

WebView 输入法设置 如上所示&#xff0c;在Switch Input Method 项勾选。然后运行项目即可效果如下。 git下载地址&#xff1a; https://github.com/aSurgingRiver/WebView 上一篇 虚幻浏览器插件 页面跳转 目录 下一篇 虚幻浏览器插件 加载透明网页

虚幻4基础人物移动

新建一个文件夹&#xff0c;命名Blueprint。 新建角色&#xff0c;玩家控制器&#xff0c;游戏模式基础。在世界场景中对应&#xff08;世界场景设置找不到左上角窗口下拉菜单里&#xff09; 点击新建的角色&#xff0c;左边点击网格体&#xff0c;右边骨骼网格体选择自己倒入…

开源“模仿”ChatGPT,居然效果行?UC伯克利论文,劝退,还是前进?

原创&#xff1a;谭婧ChatGPT 从“古”至今&#xff0c;AI的世界&#xff0c;是一个开源引领发展的世界。 虽然Stable Diffusion作为开源的图像生成模型&#xff0c;将图像生成提到了全新境界&#xff0c;但是ChatGPT的出现&#xff0c;似乎动摇了一些人的信念。 因为ChatGPT是…

没有这些,别妄谈做ChatGPT了

文&#xff5c;卖萌酱 转自 | 夕小瑶的卖萌屋 ChatGPT破圈爆火后&#xff0c;越来越多人开始问&#xff1a; “啥时候出现中国版的ChatGPT&#xff1f;” 国内学术界和工业界&#xff0c;都纷纷躁动起来——百度、阿里、字节等大厂纷纷喊口号&#xff0c;一众创业公司也开始争做…

2023年中国AI芯片行业市场现状及未来发展趋势预测

2023年AI芯片报告汇总了60家国产AI芯片厂商&#xff0c;大致按如下应用类别进行归类&#xff1a;云端加速、智能驾驶、智能安防、智能家居、智能穿戴、其它AIoT。对于每一家筛选的公司&#xff0c;我们从主要产品、核心技术、应用场景、市场竞争力、发展里程碑等方面对公司进行…

ChatGPT Plugins引发AI行业“洗牌”,与元宇宙双向奔赴

三月迎来AIGC新品爆发大热潮&#xff0c;据不完全统计&#xff0c;在两周内GPT-4、微软Microsoft 365 Copilot、Midjourney V5、Google PaLM API、英伟达新显卡接连出场&#xff0c;创新工场CEO李开复、美团联合创始人王慧文、阿里副总裁贾扬清、搜狗创始人王小川等纷纷进军&am…

ChatGPT Plugins内幕、源码及案例实战(二)

第6章 ChatGPT Plugins内幕、源码及案例实战 检索插件的API需要以下环境变量才能工作,如表6-2所示。 ChatGPT检索插件示例中,“.well-known”目录里面的ai-plugin.json是一个插件的说明文档,插件名为Retrieval Plugin,用于搜索用户的文档(如文件、电子邮件等),该插件…

ChatGPT Plugins内幕、源码及案例实战(三)

ChatGPT Plugins内幕、源码及案例实战(三) ChatGPT Plugins内幕、源码及案例实战 6.4 ChatGPT Retrieval Plugin全流程内幕解析 以ChatGPT检索插件为例,我们讲解一下它整个的流程,让大家有一个比较明确、清晰的统一认知:  数据存储:设立的前提是你有文档,会有一些文…

ChatGPT Plugins内幕、源码及案例实战

ChatGPT Plugins内幕、源码及案例实战 6.1 ChatGPT Plugins的工作原理 本节主要跟大家谈ChatGPT的插件&#xff08;Plugins&#xff09;&#xff0c;这个内容非常重要。现在很多企业级的开发&#xff0c;一般都会基于ChatGPT插件进行一些服务的封装&#xff0c;相当于开发了一个…