自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 # 第9章---自定义输入框架搭建以及Ability初识

*** Ability System Component 拥有两个Owner: Owner Actor 以及Avatar Actor,这两个Actor有可能相同,有可能不相同* Owner Actor 指的是实例化组件的Actor* Avatar Actor 指的是ASC实际上服务的Actor,例如* - RPGGameEnemy 内的ASC的 Owner Actor 和 Avatar Actor 都是 RPGGameEnemy 这个 Actor 类自身。

2024-03-06 18:45:30 951 2

原创 # 第8章---实现属性菜单相关UI搭建及功能实现

*** 继承自DataAsset*/UCLASS()public:// 给GameplayTag找到与这个GameplayTag相关的信息// AttributeInfo队列,在蓝图内填写,不需要在C++内填写。

2024-03-06 18:44:58 1106

原创 第7章---GE的AttributeBase和CunstomCalculationClass

记住Coefficient, Pre Multiply以及Post Multiply的计算顺序: (属性值+Pre Multiply) * Coefficient + Post Multiply在选择Custom Calculation Class 后,依然可以使用Coefficient, Pre Multiply以及Post Multiply三个值C++文件有更新,但是部分基础的东西不写出来了。

2024-03-06 18:43:34 907

原创 第6章---GameplayTag初识以及拾起物品UI制作

*** Ability System Component 拥有两个Owner: Owner Actor 以及Avatar Actor,这两个Actor有可能相同,有可能不相同* Owner Actor 指的是实例化组件的Actor* Avatar Actor 指的是ASC实际上服务的Actor,例如* - RPGGameEnemy 内的ASC的 Owner Actor 和 Avatar Actor 都是 RPGGameEnemy 这个 Actor 类自身。

2024-03-06 18:43:01 1085

原创 第5章---GameplayEffect的使用

由于GE拥有丰富的可选项,我们甚至不需要去设置子类,直接用插件的类来创建蓝图GE类就可以了,在这里写下所有的选项对应的功能。Source

2024-03-06 18:42:27 870

原创 第4章---初始化UI控件(UI架构搭建)

在InitAbilityActorInfo()函数中。

2024-03-06 18:41:51 993

原创 第3章---初始化AttributeSet文件

对AttributeSet内的属性值做出改变的物体的父类,有可能是各种药水,或是某个陷阱。新增四个属性,同时考虑多人游戏情况。声明一个静态网格体以及一个碰撞体。

2024-03-06 18:41:10 342

原创 第2章---初次接触GAS系统

声明ASC组件以及AS组件,实现IAbilitySystemInterface接口内的GetAbilitySystemComponent()函数,新增GetAttributeSet()函数。声明ASC组件以及AS组件,实现IAbilitySystemInterface接口内的GetAbilitySystemComponent()函数,新增GetAttributeSet()函数。注意看注释,注释写了不同的复制模式以及需要注意的点,在写单机游戏的时候将多人游戏一起考虑进去准没错。定义一个自定义的ASC类。

2024-03-06 18:40:30 500

原创 第1章--项目基础框架搭建

敌对角色基础类,实现Enemy接口,暂时只有高亮角色以及取消高亮角色两个函数。玩家控制器类,用于处理玩家输入相关事件。游戏模式基本类,无C++实现。敌人接口,在.h内声明虚函数。

2024-03-06 18:39:51 325

原创 UE5.0.3 widget截图问题

注意,使用FSlateApplication类的时候,我们需要在build.cs文件内对Slate模块进行引用。否则会出现无法解析函数的error。新建一个UFunctionLibrary类,我们使用FSlateApplication类里面的TakeScreenShot()函数进行截图。遇到了一个特殊需求:我们需要给特定的widget进行截图,该widget正在播放一个视频。

2023-07-31 19:39:21 565

原创 UE5.1.1 C++从0开始(18.游戏标签)

再或者我们与NPC的交互中也可以使用标签,比如我们的装备可能会有标签赋予给我们,然后NPC可以对不同的标签作出不同的反应(有点像塞尔达那种)最后的一点时间教程在说给我们的AI增加一个伤害显示和血条位置的调整,我觉得这个东西应该不需要再复述了,这个东西在老早之前的教程内就教过了,就是我们的几个黄色的正方体,做受到伤害就闪一下的那一节课。子弹原路返回的功能我没有写在普通魔法子弹的类里面,而是写在魔法子弹的基类里面,不过在子类和基类里面写其实大差不差,只不过在基类里面写,所有的子类子弹都能被反弹罢了。

2023-07-06 00:04:26 621

原创 UE5.1.1 C++从0开始(17.GAS游戏能力系统)

包括后面的求Rotation的方法,我是直接进行一个减法,在我的概念内,Rotation实际上是一个方向,也就是一个向量,而向量的长短对我来说是无所谓的东西。同时如果以后我们想要往里面增加更多的魔法子弹相关技能的话,都可以通过这个MagicProjectile去创建,不用像我们以前那样一个函数写很多遍了(其实也可以只写一遍,在我们已经写好的函数内增加一个魔法子弹类,然后按生成参数的方法去生成我们的魔法子弹,但是所有代码都加到SCharacter类内,会让我们的代码显得太过于冗长,对我们的后期维护不友好)。

2023-07-05 14:02:38 643

原创 UE5.1.1 C++从0开始(16.作业5思路分享)

这个类在这里的作用单纯是存储我们的Credit用的,然后提供get set方法而已。仿照之前写的那个机器人生成的方法,同时我们把生成的函数直接插入到我们timer结束就会执行的那个函数里头(这是个偷懒的方法),有点投机取巧不过很方便。这一串代码其实就是我在之前的血瓶的代码的基础上抽象加上一点优化得到的代码,能适应大部分的情况,不过少数的子类仍然需要重写大量的父类函数。整个分数系统和我们的血量其实差不多,无非就是增加减少,检查剩余的分数够不够我们用来和血药交互的。我们用相同的方法来做。

2023-07-03 21:04:21 356

原创 UE5.1.1 C++从0开始(15.作业4个人作业分享)

好吧这个作业应该是之前写的,但是我发现我没写,后面我又回去自己写了一遍再看代码,感觉上大差不差,各位可以看着我的和老师的还有自己的对比下。EQS的设置看教程的来,我还没研究透,研究透了单独写一个EQS的文章,把里头的随机点如何得分详实地写出来。教程链接:https://www.bilibili.com/video/BV1nU4y1X7iQ。

2023-06-28 19:06:51 591

原创 UE5.1.1 c++从0开始(14.用C++写UMG类)

还有一点是,我们需要把所有关于UI的设置都放到AddToViewPort()函数调用之前,否则会出现蓝图的报错说相关参数为空的情况。最后是我们接触的控制台,也不是什么太大的问题,只不过是宏内的参数变化了而已,以前我们在UFUNCTION()的括号内填的都是蓝图可调用,默认读写啥的,如果需要把这个函数放在控制台内让我们调用,只需要在在括号内写Exec就行了,然后在相应的.cpp文件里面实现函数,最后在编辑器里面就可以调用我们所写的函数方法了。这一段的教程不难,唯一新建的C++类是UMG的一个类。

2023-06-27 18:15:29 933

原创 UE5.1.1 C++从0开始(13.AI玩家的进一步改进)

这个是AI这一章节的最后一个部分了,说句实话,我当时看AI的这个部分的时候人有点懵,因为毕竟不是我们传统意义上的玩家输入游戏内的人物作出回应的模式了,行为树的概念,每个节点的意义我如今也还在慢慢摸索,看别的游戏的敌人AI,只会感叹,感叹这个AI做的有多么的好,这些是我还是玩家的时候从未想过的问题。这里就可以看到我们写组件的好处了,如今有了两个不同的类在使用一段相同的代码,如果以后需要维护也只需要更改Attribute类里面的东西就可以了,而不需要两个类往返跑。复用的时候不需要重复写过多的函数。

2023-06-26 16:45:38 198

原创 UE5.1.1C++从0开始(12.EQS)

首先是行为树的自定义任务,SBTTask,此处的自定义task作用是发射子弹,与我们之前写的ASCharacter.cpp内的那部分代码很相似。C++的内容就这么多,可能涉及到AI的,除了自定义的内容,其它的都可以在蓝图里面实现吧,包括我们的自定义的任务节点也是在蓝图内调用实现的。Selector:从左到右的子项中,一旦有一个子项可以执行,那么执行完这个子项之后就直接返回,就算后面的子项能执行,也不执行了。Sequence:从左到右的子项中,如果有一个执行不了,直接返回,就不继续执行下面的子项了。

2023-06-04 17:13:38 645

原创 UE5.1.1C++从0开始(11.AI与行为树)

剩余的蓝图的内容以及创建对象绑定动画,创建C++的蓝图类啥的我就不在这里赘述了,教程讲的非常明确。再之后就是行为树的服务函数了,从UBTServices这个基类派生出来,说白了就是在蓝图编辑器里头写行为树的时候,你右键找‘服务’那一项下面可以找到我们自定义的服务函数。然后是SAIController,我看完这一章后对这个controller的理解就是:用来运行我们所选择的行为树,同时给我们的黑板上的变量赋一个初值。这个对象类把输入给删除了,因为电脑对象不需要我们的输入以及输入事件绑定啥的。

2023-05-26 09:27:28 623

原创 UE5.1.1C++从0开始(10.作业三)

3.增加一个health max的变量,把widget里头的health节点更换为health max节点,同时给health设置一个上下限,上限是health max , 下限是0。5.新建一个生命药水,可以恢复生命值,回复一次之后,10秒内不能再次使用,10秒后可再次使用。4.给我们刚创建出的显示伤害的widget设置一个动画,在受击的时候播放出来,同时伤害的显示不能写死,用变量来表示。至于动画怎么播放,看各位的设计了,这里是千人千面的。2.给玩家增加受击的闪亮的效果,和立方体相同的那种。

2023-05-24 21:20:32 868

原创 UE5.1.1C++从0开始(9.游戏材质相关)

不过我有个疑问,用老师的这个方法,在刚进入游戏的时候我们的cube就会闪一下,这明显是一个bug,我在蓝图内尝试靠更改TimeToHit的值来解决这个问题,也就是在我们的自定义材质函数内修改值来解决bug,问题也解决了。这一个章节蓝图占大多数,毕竟是材质相关的内容,用蓝图确实会比C++方便不少,这一块唯一一个C++的内容就是新写的一个cube的类。

2023-05-18 20:48:09 147

原创 UE5.1.1C++从0开始(8.增加血条变化,血量文本变化以及爆炸桶影响血量)

所以,我额外增加了一个SphereComp,我的思路是,玩家在爆炸桶的一定范围内,当爆炸桶发生爆炸的时候,玩家才会扣血,所以我用到了SphereComp的OnComponentBeginOverlap()事件,然后自己写了个OnComponentBeginOverlap()的函数,将其绑定到开始重叠的事件后。主要逻辑是相同的,只不过老师是用蓝图实现的,我们这个文档叫C++系列嘛,所以我用C++写了一遍,最后效果是相同的,给各位做参考。这之后就是在用户界面的蓝图编辑器内去写一些基本逻辑。

2023-05-17 22:55:46 216

原创 UE5.1.1C++从0开始(7.增加人物血量属性)

接下来就是一个让我感觉很坑爹的地方,老师那里的扣血功能的实现,他只是在他做的一个单一的类中,而我们的代码是自己写了一个父类和多个子类的,那么我们的增加的新功能要放到哪里呢?需要注意的点还是用中文打了注释,自己看,看不明白问我。说句实话这一节有点坑,教程上老师的那个项目其实是没有向我写的这些代码一样,做一个父类,然后写三个子类的子弹的,所以老师的代码只需要更改一点点东西就好,而我们的代码可能需要考虑的东西就比较多。我这里加上了点个人的思考,然后翻译成了中文放出来,看不懂的可以参考我的这个翻译版本。

2023-05-16 22:52:10 468

原创 UE5.1.1C++从0开始(6.两个额外的魔法弹:瞬移魔法弹和黑洞魔法弹)

后面的黑洞魔法弹的实现功能,我遇到了点问题,我最开始的思路是在子弹上面增加一个径向力组件,然后每帧都fire Impulse一次,但是实际上的表现非常糟糕,于是我去ue官方的文档去查是否有什么函数能持续给模拟物理的组件施加一个持续的力的函数(提一嘴,UE的中文区的文档写的非常糟糕,一直都是这样,不知道中文区的人们每天在忙什么。b站的官号有些视频是比较好的,查东西的优先级我是:b站>CSDN>UE文档,不过这个教程的纯代码的分享我没在CSDN上面看到,有一个哥们写了这个功能,但是他没放代码。

2023-05-15 16:05:41 603

原创 UE5.1.1C++从0开始(5.魔法子弹的落点问题)

换句话说就是,将我们的子弹的方向从与我们视角方向一直更变为朝向准心所指的方向。如图所示,红色是从摄像机出发,沿着我们的视觉中心的一个碰撞检测,而绿色的线是我们子弹的移动路线,每次摁下鼠标左键的时候,进行一次碰撞检测,如果检测到了碰撞,那么就将碰撞点设为我们子弹的落点,而我们子弹的起点照旧不需要改变,这样一来,子弹的rotation就确定了。这篇文章先解决第一个作业:魔法子弹的落点问题,各位看教程估计也看到了,游戏内人物发射的子弹朝向虽然是和我们的视角朝向相同,但是它的落点并不是我们视角最终落在的地方。

2023-05-11 20:58:41 231

原创 UE5.1.1C++从0开始(4.虚幻的接口以及交互功能)

很困难的,所以把这些功能分开,有助于我们后期维护代码。注:我们不需要在SGamePlayInterface.cpp文件中对我们的函数进行实现,实现是别的继承接口的类的工作,而不是我们接口类的工作,接口类的工作就是定义函数,说白了就是.cpp文件你不用动,在.h文件里面写了东西,就行了。这一个章节对于第一次接触虚幻的人来说可以说是最绕的一个点,因为老师突然给你塞了很多的概念,对于这一块的学习,我个人的推荐是:先把蓝图搞明白了,再对应到C++的代码中,不然一定会被整的晕头转向。还是,有不懂的点就来问我。

2023-05-07 18:44:13 1410

原创 UE5.1.1C++从0开始(3.发射魔法弹以及爆炸桶效果)

随后老师给了一个作业,完成人物的跳跃以及爆炸桶的功能。跳跃功能我们在前面的时候就已经实现了(参照官方的第三人称代码实现的)所以我这里就实现爆炸桶的功能。按照那个老师的说法,是为了系统的可拓展性,所以这里不会写死,而是写一个模板子类,而我们攻击的时候就生成这个类的对象。这里最大的问题说实话是将函数绑定到组件的事件上面,我们蓝图内直接连线,而C++需要一个委托才能绑定到我们的自定义函数,但是这个委托其实是一个标准流程,我们用蓝图自己整习惯了。对魔法弹的设置较为简单,只是在初始化的时候对几个属性进行赋值罢了。

2023-05-05 17:00:58 747 1

原创 UE5.1.1 C++从0开始(2.摄像机转向)

还是摄像机绑定的那个弹簧臂?官方的示例代码写的很明白,对于玩家控制的到底是哪个组件?官方的代码都写清楚了,斯坦福的教程更多的是一步一步的引导,我个人倒是感觉一次性讲明白会更方便,就没有考虑斯坦福教程的代码,而是看一遍网课理解思路是怎么一步一步的到最终和官方示例代码差不多的那个感觉的。我唯一有点疑惑的是,官方的实例文档中,JUMP功能的绑定最后的绑定函数的类引用,为什么是ACharacter,而不是我们创建的这个类呢?我尝试了下用我们自己的类去调用这个函数,其实是能够调用到父类的函数的,也许是性能问题?

2023-05-04 21:54:43 418

原创 UE5.1.1 C++ 从0开始 (1.人物移动)

开个天坑,UE5.1.1的移动代码做了一个大更新,对于我这种万年蓝图然后正在转C++的人来说可以说是个挑战也可以说是个更方便我去工作的一个点。我们的空项目内的Build.cs文件内是不会有EnhancedInput这个插件包的声明的,我们需要在AddRange函数后面加上这个包的包名。我在B站上面看到没人写,也没有人讲这个东西,所以干脆自己从官方的第三人称游戏入手,先看看官方的代码是怎么写的以及是怎么设置的。官方的代码我这里就不重复输入了,我的博客里面有用中文注释写过一个我对于官方代码的理解,链接在这里。

2023-05-04 15:30:11 1388

原创 UE5.1.1版本第三人称模板Character C++文件分析

注意:其中有部分组件在当前.h文件与.cpp文件中未定义,原因是因为其父类定义了相应的组件,子类继承父类自然就有了这些东西,想找到更详细的组件定义的话就去character类和pawn类甚至是object类里面找。

2023-05-02 21:34:25 686

原创 线性表C++实现(重写了一遍)

我把链表,数组写一起了,用.h文件和.cpp文件写了一遍,没有抄之前的代码,思路可能会有不一样的地方,重要的点都有注释,没有的地方不会的就问我。

2023-04-06 18:06:08 416

原创 处理机调度典型调度算法

先来先服务(FCFS)短作业优先(SJF)高响应比优先(HRRN)时间片轮转多级反馈队列是否可抢占否能能能队列内算法不一定是否不可抢占能能能否队列内算法不一定特点公平、实现简单平均等待时间最少,效率最高兼顾长短作业兼顾长短作业兼顾长短作业,有较好的响应时间,可行性强缺点不利于短作业长作业会饥饿,估计时间不确定,可能会有造假的现象计算响应比的开销大平均等待时间较长,上下文切换浪费时间无适用于无作业调度,批处理系统无分时系统通用默认决策模式。

2023-03-31 14:29:47 552

原创 进程线程问题总结 408

若一个进程实体由PCB、共享正文段、数据堆段和数据栈段组成,那么C语言程序中的全局赋值变量和常量值位于正文段中,未赋值的局部变量和函数调用实参传递值处于栈段,进程的优先级处于PCB中,用malloc()要求动态分配的存储区位于堆段中。进程封闭性指进程的执行结果只取决于进程本身而不受外界的影响。程序代码经过多次创建可对应不同的进程,同一系统的进程或线程可以由系统调用的方法被不同的进程或线程多次使用。当被阻塞的进程等待的某资源(不包括处理机)可用时,进程会被唤醒。管道通信又称文件系统。

2023-03-13 18:15:25 213

原创 线程(操作系统408)

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可以与同属一个进程的其他线程共享进程所拥有的全部资源。用户级线程中,有关线程管理(创建,撤销)的所有工作都由应用程序在用户空间中完成,线程对于内核来说是透明的,内核不知道线程的存在,只看得到进程。线程是处理机的独立调度单位,多个线程是可以并发执行的。而在同一个进程中,线程是独立调度的基本单位,而线程的切换代价远低于进程,因为在同一进程中,线程之间的切换不会引起进程之间的切换。

2023-03-10 22:00:29 986

原创 进程(操作系统408)

在多道程序环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性以及不可再现性的特征。为此引入了进程的概念,一个进程代表一个允许的程序。进程是动态的运行过程,而程序是静态的代码。进程可以让我们更好的描述和控制程序的并发执行,实现操作系统的并发性和共享性。为了让参与并发的每个进程都能独立地运行,必须为每个进程配置一个专门的数据结构,我们将这个数据结构称为。

2023-03-08 22:07:19 443

原创 虚拟机(408操作系统)

首次启动第二类虚拟机管理程序的时候,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。在支持虚拟化的CPU上,虚拟机管理程序会检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的。在不支持虚拟化的CPU上,真实硬件不会直接执行虚拟机中的敏感指令,这些敏感指令会被转为对虚拟机管理程序的调用,由虚拟机管理程序模拟这些指令的功能。,很像一个普通的进程。一台逻辑计算机,利用特殊的虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境。

2023-03-05 22:42:10 919

原创 操作系统引导

激活的CPU读取ROM中的boot程序,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令,也就是开始执行BIOS的指令。硬件自检之后,BIOS开始读取Boot Sequence(通过CMOS里保存的启动顺序,或者通过于用户交互的方式),把控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导的扇区内容加载到内存中。读取活动分区的第一个扇区,这个扇区被称为分区引导记录(PBR)。,程序以数据的形式存放在硬盘中,而硬盘通常分为多个区,一个计算机中又有多个或多种外部设备。

2023-03-03 20:55:25 1254

原创 操作系统结构

随着操作系统的不断增多和代码规模的不断扩大,提供合理的结构对提升操作系统的安全与可靠性来说变得尤为重要。

2023-03-03 20:35:51 692

原创 操作系统运行环境

又称。

2023-03-01 23:00:03 262

原创 操作系统发展历程

用户在计算机上算题的所有工作都要人工干预。该阶段有两个突出缺点:用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。CPU等待手工操作,CPU的利用不充分唯一的解决办法就是用高速的机器代替相对较慢的手工操作来对作业进行控制。为了解决人机矛盾以及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。批处理系统主要分为单道批处理系统和多道批处理系统(多道程序设计技术出现以后)单道批处理系统系统对作业的处理是成批进行的,但是内存中始终只允许一道作业。特征如下:自动性,一般不需要人工干

2023-02-28 21:20:59 119

原创 操作系统的基本概念

计算机系统自上而下分为4个部分:硬件,操作系统,应用程序和用户(操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机与硬件之间的中介。

2023-02-27 14:21:19 131

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除