在撰写本文时,我是一名软件开发人员的学生。 我已经编码了大约三年半。 按照我自己的标准,我是一个初学者,直到现在才为自己定义为程序员,并且仍然渴望学习新的语言并找到编码的新技术。 有时,我对编程的缺乏经验意味着,当遇到需要学习一种新语言的项目时,我犹豫不决地像其他人一样首先真正地投入了头脑。 因此,当我第一次开始使用虚幻引擎4并意识到我将第一次被引入C ++时,我很紧张! 但是,随着项目的进行,由于有了Event Graph实用程序,我对C ++和Unreal功能的轻松使用得到了极大的帮助。
事件图是C ++代码的直观表示,您猜到了它是由事件触发的! 每当游戏世界中发生事件时,无论是敌方角色,玩家角色,还是与游戏模式相关的事件,开发人员都可以调用C ++函数和实用程序,使他们能够自定义和构建自己的游戏,但他们认为合适。
- 使用Git使根特盗窃自动。 🔃
- IGDB.com行业洞察力-第4集:Collin Bishop
- Colyseus — HTML5多人游戏变得简单(v0.5.0更新)
- 内心世界I:太空工程师弗拉基米尔·罗曼纽克(Vladimir Romanyuk)
- GameDev Protips:如何实际完成您的独立游戏项目
为了向您展示事件图的某些功能,我将带领您完成我创建的双棍射击游戏中的生成敌人事件。 此游戏无限产生怪物角色,而玩家角色则以一小段关卡几何形状向敌人角色射击。
我们从“ SpawnEnemy”事件开始,这是一个自定义事件,它调用“ Get All Actors Of Class function”。 您可以在“演员类”文本下方看到一个下拉列表,该下拉列表当前设置为“敌人角色”,该对象是先前创建的对象,代表此生成器将创建的角色模型。 该函数返回一个数组,它应该是一个get函数,它将检索游戏世界中的所有敌方角色。 该数组由函数右下角的蓝色框表示。 通过单击并从蓝色框中拖动,将弹出搜索查询,询问您想对函数的返回做些什么。 对于我的特殊需要,我必须能够确定在任何给定时间游戏世界中有多少个敌对角色,并设置了可以容纳的敌方数量限制。 结果,我创建了一个节点,以确定获取所有敌方角色后得到的数组长度。
然后,我创建了一个节点,该节点评估数组的长度是否小于我设置为15的“ Max Enemies”变量。这用作“分支”节点(即事件)的布尔条件。图的“ if”语句版本。 事件图允许您通过将错误结果与新条件链接在一起来创建“ if-else if”构造,但是对于此示例,只有“ if”构造。 然后,如果小于15的条件计算为true,则该分支将调用对“从类生成AI”函数的调用,这将产生一个敌方角色。
我们几乎用完了这个用例,但是还不完全。 仍然需要有一个从中产生敌方角色的位置。 那就是我们的“ SpawnEnemy”事件的最后一部分起作用的地方。 与“ Spawn AI From Class”功能上输入的位置绑定的是对3个函数的调用:“边界框内的随机点”,“获取世界位置”和“获取比例框范围”。 所有这些功能都与生成体积变量关联,该变量表示关卡几何体上方的不可见网格,允许敌人在其内部的任何位置生成对象。
这意味着绑定到生成卷的功能将实现该卷的功能。 他们读取生成体积的尺寸,读取体积在水平中的位置,并在其内部选择一个随机点以创建敌人角色。
由于虚幻引擎的易用性和代码文档,我能够轻松查找和研究创建该项目所需的内容。 通过右键单击“事件图”并搜索我想要的内容,将节点内部的值单击并拖动到事件图上,或者从UI的组件面板中单击并拖动对象,可以创建所有这些。 虚幻提供了任何非定制事件或函数的源代码。 因为我能够通过事件图查看项目中实现的其他一些关键功能的源代码,所以我能够使自己轻松学习C ++,并消除了学习新语言的早期恐惧感。