- 博客(143)
- 收藏
- 关注
原创 UE5 实现组合键触发事件的方法
好了,然后 就可以在想要的蓝图里使用组合键了,具体操作是搜索,刚才定义的输入操作文件名,选择。根据命名规则,将其命名为IA_自定义名字,我将其命名为kuohao(括号)和shift。选择输入映射情景,创建一个文件,根据命名规则,将其命名为IMC_自定义名字。就是下面这两个文件,也有自己的命名规则,但是我没改,就这样吧。花费了一下午,终于找到解决的方法了,也就是增强输入的弦操作。然后再创建两个文件,分别是蓝图类的玩家控制器和游戏模式基础。点击触发器的加号,点击下面的索引框框,选择弦操作。
2024-11-25 15:28:23
1175
原创 ue5第三人称闯关游戏学习(一)
Unreal Learning Kit:Game这个资产在fab中有,但是stylized character kit: casual 01 没有迁移到fab中,取而代之的是stylized character kit: casual 02 卖14.9美元。使用Unreal Learning Kit:Game创建项目,并把stylized character kit: casual 01文件夹放到根目录。这个视频的作者在制作视频时,ue还是使用ue商城的,但是在今年202411月时,ue商城改为了FAB。
2024-11-24 23:53:13
599
原创 UE5 第一人称射击项目学习(完结)
你会发现,在这里引出一条线,可以调用这个print your name。之前把子弹设计为蓝图,这里要引入C++的面向对象思想,建立成员函数。大概是这样,有关成员函数 具体的操作,是在下个项目中实现。最后的最后,加一个子弹打完后重新运行当前关卡的功能,大概就是上面这样,这个第一人称的游戏,算完结撒花了。使用下面这两个节点,然后选择折叠到函数中。下个项目是C++混杂蓝图的闯关类项目。在这里生成成员函数后,点击关卡蓝图。也算我上手的第一个纯蓝图小项目。就写在检测子弹的数量后面。这个项目几乎完结了。
2024-11-21 22:09:18
853
原创 UE5 第一人称射击项目学习(四)
这种情况下,确定此函数是纯函数(也就是计算数值,而没有其他副作用的函数),可以点击纯函数选项,这样就会去掉执行线。首先,蓝图本身比较乱,因此我们可以把函数折叠的,这里可以理解把节点抽成了一个整体。选中节点,点击之后,会把这几个节点也折叠成为一个新的函数。双击之后,会发现多出现了两个紫色的东西,那就是输入和输出。现在跳出来,会发现,原本只是赋值的函数,有了执行线。上一节 其实已经完成了项目蓝图的实现。这里记录一下蓝图锦上添花的操作。也可以在这里添加一个自定义函数。现在看,节点就比之前的整洁一些。
2024-11-21 00:30:42
476
原创 UE5 第一人称射击项目学习(三)
然后使用branch分支(类似C++的if判断)来与0进行判断,如果减的值大于0则发射,否则停止发射并且提醒玩家,子弹消耗完毕。把变量的类型设置为整形变量,默认值设置为20(你也可以设置自己想要的子弹数量)具体的操作就是,每射击一次,就从ammo中取值,减一,再重新赋值回去。以空格事件为开始,中间用branch分支来判断走向。现在在这一章里,要设计出子弹有限的功能。已经成功创建了跟随视角射击子弹的蓝图。首先打开蓝图,点击添加变量ammo。用这个变量来记录子弹数。然后我们需要做 件事。
2024-11-19 21:29:59
482
原创 UE5 第一人称射击项目学习(二)
然后,把子弹的向前向量提升(在ue5的标准向量是以1cm为单位,所以虽然子弹跟随视角发射,但是速度太慢),从 生成Actor的return Value处拉一根线,获取向前向量 乘1000.运行程序,按住f8的同时,按wasd,离开,会发现原本的地方出现了一个球体,这就是我们的actor,它同样有deteil细节。而是要搜索get control 旋转获取控制旋转,这样子弹就随着视角的旋转而同样旋转。不过,现在的子弹是圆球形态的,所以无法分清到底怎么旋转,所以需要把子弹变成不规则图形。
2024-11-19 00:12:05
473
原创 UE5 5.1.1创建C++项目,显示error C4668和error C4067的解决方法
根据另一台 可以运行 ue5.1 的visual studiod的installer安装程序一项一项的判断,安装。但是我在安装下载了visual studio2022后,使用 ue5.1编辑器 创建C++项目,爆出如下错误。然后使用ue5 5.1.1版本应该能创建C++项目(注意项目名和项目路径不能有中文)不报错。我的系统是win11 ,visual是学生版2022。下面的单个组件 打勾的选上,没打勾的点掉,不要安装。因为工作要求,没法使用最新 5.5版本的ue5。可以直接创建C++项目而不报上面的错误。
2024-11-18 23:29:44
2453
6
原创 UE5 第一人称射击项目学习(一)
因为工作需要,需要掌握ue5的操作。选择了视频资料作为学习。第一个目标是跟着视频制作出一款第一人称射击项目。同时作为入门,这个项目不会涉及到C++,而是一个纯蓝图的项目。
2024-11-16 01:00:49
1103
原创 ue5 蓝图学习(一)结构体的使用
在变量的右侧,变量类型里搜索strcut,可以查找到刚才定义的结构体。可以通过 break +结构体名字来拆分结构体,单独使用属性。下面这东西就是结构体,和C++的结构体差不多。可以添加变量,设置变量的类型和默认值。在内容浏览器中右键 蓝图-选择结构体。点击打开关卡蓝图,添加变量。选择中断 MYstruct。可以在关卡蓝图中调用它。拉出来之后,可以使用。
2024-11-13 20:29:29
834
原创 UE5 umg学习(四) 将UI控件显示到关卡中
目标是运行的时候,开始运行这个蓝图,因此需要在开始事件触发运行。在前三节里,创建了用户的控件蓝图Widget_BP。class的搜索框中搜索Widget_BP1,选择。首先,回到主页,点击关卡蓝图。要从事件开始运行时 执行蓝图。把流程线和数据线都连起来。右键点击搜索,创建控件。搜索“添加到视图”选择。
2024-11-13 17:12:53
1137
原创 Ue5 umg学习(三)文本控件
可以导入字形,使用,不过要注意,不要导入FZ系字体,不然可能会涉及侵权。这时,可以选择大小到内容,这样,文字的大小与框框的大小就匹配了。下面有一个轮廓设置,可以设置轮廓大小和轮廓颜色,设置结果如下。注意,取色器第二条一定要选,不然第一条无论选什么,都是黑色。修改尺寸会修改字的大小,但是框的大小不会变化,情况如下。将其拉入画布中,和图像控件使用方法类似。很轻易的发现,绿色的框框和文字并不匹配。右边是字形,尺寸,字间距。从通用中,选择文本控件。
2024-11-13 16:22:21
772
原创 Ue5 umg学习(二)图像控件,锚点
选择大小到内容 图像就会变为原始大小,要修改大小,需要选择笔刷下的图像大小,进行修改。单击选择imag1后点击刚才的小白块,点击右侧的使用内容浏览器选择的资产。当多个图片堆叠时,这个属性保证了,谁在上面,谁在下面,优先度越高,这里需要一张ui图片,我截图了一张图片作为例子,其他图片也可以。锚点的作用是 是修改分辨率时,画布上的图片距离锚点的不会变化。白块和图片的Zorder的值都为0,显示白块在图片上。点击,image,把刚才的那张图片移动进去。点击小白块,会发现右侧的属性。左上角像花一样的是锚点。
2024-11-13 15:45:55
776
原创 Ue5 umg学习(一)
画布:主要作用 调整控件的位置,超出画布之外的控件不会渲染,画布本身没有位置,只能通过设置分辨率的方式设置大小。虚幻4中,默认存在于层级中,虚幻5则取消了画布默认,需要五面自己添加,增加了灵活性。创建控件蓝图,重命名,在名称后面加一个_BP1代表是蓝图1号。放置控件:将对应控件拖到工作区即可完成控件的添加。创建新的文件夹UI,在这个文件夹里写东西。在蓝图内,面板选择画布面板,拖动到右侧。我这里选择1920X1080。右键用户界面,选择控件蓝图。在通用里可以选择按钮。
2024-11-13 14:52:58
876
原创 ViSual studio如何安装 并使用GeographicLib
在C++的 Boost.Geometry、GDAL/OGR 和 GeographicLib。这些库都可以用于计算两个经纬度点之间的地面距离。
2024-10-30 16:28:52
919
原创 如何在visual studio中 生成 并 使用dll和lib文件
因为工作需求,要写lib和dll给别人使用。使用visual studio2022以函数为例子首先点击打开 visual studio 文件->新建->项目选择windows桌面向导选择应用程序类型为动态链接库.dll分别创建MyDLL.h和MyDLL.cpp文件,点击添加 新建项依葫芦画瓢,在源文件里创建MyDLL.cppMydll.h的代码如下MyDll.cpp的代码如下点击生成解决方案如果一切正常的话,会显示生成正常,并且显示出生成的dll和lib所在文件夹。
2024-10-30 11:08:05
3452
原创 在visual Studio中引入Google Test进行单元测试
静态链接:如果希望避免运行时依赖,确保所有必要的库都在一个可执行文件中,可以选择静态链接。名为“Test Project Configuration”,用于配置Google Test和C++运行时库的使用方式。:如果希望节省内存使用,并且允许更新单个库文件而不需要重新编译整个项目,可以选择动态库。确定visual Studio安装了Google Test测试适配器,如果没有,安装。:初始化Google Test框架,解析命令行参数,配置Google Test。:运行所有定义的测试用例,返回测试结果。
2024-10-28 17:17:48
734
原创 ide快捷键以及js的小知识
事件委托的核心思想是利用事件冒泡,每个子节点的事件都会冒泡泡到父节点中,因此可以给父节点注册事件,通过一次注册dom,就能完成。this在函数定义时是不能确定指向的,通常在函数运行时会指定函数的调用者,而且vue里的箭头函数,回调函数也有这种该问题;在全局函数或者普通函数中,this指向widows,在构造函数中指向实例,在回调函数和被调用函数中,指向调用者。节点可以增加也可以删除,可以参考列表的操作方法,设置某个节点为父节点或者子节点、网页上的所有内容都是节点(node),包括标签,属性,文本,注释。..
2022-08-25 18:03:21
410
原创 学习方法
我之前学习的方式都是面向百度编程。但是一则百度的知识都是碎片化的,二则试错的时间成本太大。百度的答案不客气的说百分之99都是由网络爬虫爬出来的,简直就是智障。而且即使有幸找到了原始的答案也很难配合上。在做一个需求之前应该先用脑子或者纸笔写出来自己认为的流程,再分析这个流程自己有什么问题,或者说不确定的地方,有针对性的查找资料。...
2022-05-07 20:07:54
180
原创 记一个错误,原来vue项目需要后端项目打开才能运行
搞了半天了。原本一直好好的,但是昨天vue项目报错。查看配置文件export const BASEREQUESTURL = 'http://localhost:8081/'是8081,当时陷入了误区认为这是该项目的端口号再打开谷歌浏览器的调试台 按F12发现错误信息没有改代码,那就是外部环境的错。第一个想到的就是端口号查看了vue前端的端口号。不是8081,我尝试了把81改成8081,提示无法访。换一种方法,export const BASERE.
2022-04-26 09:57:58
858
原创 记录运行springboot下的一个hello world所踩的坑
使用java的springboot框架写hello world,并解决了一个问题
2022-04-13 16:25:40
221
转载 sping的注解注入
@Component放到类上面标注,可以使POJO类(普通的java类)转换为容器管理的beanSpring还提供了三个等效注解@Controller:对Controller实现类进行注解。@Service:用于对Service进行类注解@Responsitory:用于对DAO进行类注解扫描注解定义的bean在实现类上添加注解之后,还需要在配置文件中设置扫描类包才能让Spring容器识别到<?xml version="1.0" encoding="UTF-8" ?>
2022-04-11 10:36:50
101
原创 学习Java引起对系统分配内存的思考
学习Java时了解了它的内存分配情况,Java将内存分为堆区,栈区和静态区。这引起我的思考,我在学习C++时学到C++分别将内存分为了堆、栈、自由存储区、全局/静态存储区和常量存储区。那么不同的内存分区会根据内存的不同而发吗?为什么要那么分?如果分了以后,为什么堆区 栈区 静态区的效率不同?针对第一个问题,不是,内存在物理层面上是相同的,无所谓分区,第二个问题,我的回答是,它就是那么分的,就像为什么男人和女人有两种性别一样,或许有答案。第三个问题,从硬件的角度来看,内存都是一样的但是
2022-04-01 11:11:20
718
原创 Java泛型基本操作
import java.lang.reflect.Array;import java.util.*;interface trytry<T>{ public void Try();}class father<T> { father(){ System.out.println("就是个非静态构造函数"); System.out.println("father end"); } publ.
2022-03-31 19:12:34
241
原创 Java的main函数里的参数研究
今天学习Java犯了个低级错误,main函数的参数Stirng忘记加[],导致在idea平台无法编译运行。这是源码。import java.lang.reflect.Array;import java.util.*;public class test { public static void main(String args){ Class c1 = new ArrayList<String>().getClass(); Class c
2022-03-31 16:53:33
519
原创 java的向上向下类型转换
class dog extends anmale{ int dog; void eat(){ System.out.println("dog eat"); }}class cat extends anmale{ int cat; void eat(){ System.out.println("cat eat"); }}public class anmale { public static void main.
2022-03-30 10:44:42
1497
原创 JAVA学习笔记0
从0开始学习JAVA。所用教材为《thinking in JAVA》JAVA是一种面向对象oop的语言,和C++类似,我个人认为它是一门C++-的语言,有以下区别1.废除了C++中独立存在的变量和函数,必须使用类。2.取消了指针的使用,JAVA 中的传入到方法的对象是其引用,而C++传入到方法的形参可以是指针,引用或者是调用拷贝构造出的新的对象。3.JAVA中程序员使用new在堆上分配空间调用构造函数来实例化变量,C++中也用new来分配内存,但是需要自己delete掉内存否则会内存泄漏
2022-03-28 18:55:54
751
原创 根据先序和中序求二叉树
举个例子EBADCFHGIKJ 先序(根左右)ABCDEFGHIJK中序 (左根右)我将其求二叉树的过程称为 求根方法在先序上的每个节点都是其子树的根节点(听起来是废话)先通过先序找到根节点E,在中序中可以看出,ABCD E FGHIJK,E的左边就是左子树的节点ABCD,E的右边是右子树的节点FGHIJK。再通过先序找到第二个节点B,在中序中可以看出,B的左边就是左子树的节点A,B的右边是右子树的节点CD依次类推不断的在先序中找到节点作为根节点,再从中序遍历中看到该节点的左右孩子所属
2020-09-25 19:49:45
7886
2
原创 C++new运算符
new运算符虽然用的很久,但是我实际上对它的了解仅仅局限于表面知道和malloc一样可以在堆内存中申请内存,可能会调用对象的构造函数。但是具体的实现和什么时候调用构造函数完全不了解,因此今天在这里进行梳理。1. new的常见用法int *a =new int[5];int *b =new A();在实际操作中,我们发现A的申请的空间的储存的值为随机值,new仅仅申请了一块随机空间,但是B的申请的空间的值已经初始化了,new调用了A的构造函数。new A()的功能如下在堆上申请空间在分配的空
2020-09-25 19:14:09
665
原创 填充每个节点的下一个右侧节点指针 II
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。思路:通常而言,这种题目和层序遍历有分不开的关系,使用队列辅助实现,空间复杂度为O(N),完成代码如下class Solution {public: Node* connect
2020-09-24 11:17:36
241
原创 每日一题回溯算法
今天要写的题目是剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]万物皆可暴力,但是时间复杂度太高了,因此我们可以考虑dfs和回溯算法需要注意的是如果给出了的字符串有重复字符,则需要剪枝操作。下面为回溯的代码class Solution {public:vector<stri
2020-09-24 07:58:26
163
原创 滑动窗口的最大值
每天学一点,今天解决的是剑指offer的剑指 Offer 59 - I. 滑动窗口的最大值。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6
2020-09-23 23:57:20
195
原创 每日一题47. 全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]这题看完后是头痛的,还是用dfs算法比较好解,首先把这道题理解成给你一些数字,让你用这些数字进行填空,最后把所有填得的数列存起来返回。难点:这些数字是具有重复性质的因此,需要一个数组来纪录某个数字及其重复数字是否填入,如果填入就跳过,否则继续。vector<int> vis;vis.resize(nums.size());if(vis
2020-09-18 18:38:00
179
原创 面试题 05.07. 配对交换
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1:输入:num = 2(或者0b10)输出 1 (或者 0b01)示例2:输入:num = 3输出:3这题开始没搞懂,以为是十进制的奇数偶数交换,然后发现是2进制的奇数偶数交换,开始使用stl容器进行纪录每一个数位的数字,再进行交换class Solution {public: int exchangeBits(int num) { ve
2020-09-13 12:04:18
186
原创 面试题 08.01. 三步问题
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13有一说一,这就是青蛙跳台阶问题,我开始写的代码如下class Solution {public: int waysToStep(int n) { int sum = 0; dfs(n,sum);
2020-09-13 11:38:41
155
原创 每日一题单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false应该使
2020-09-13 11:16:34
161
原创 每日一题总结二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ 9 20/ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。这道题的实质是考察层序遍历,深度优先搜索和广度优先搜索对深度优先而言,需要维护两个序列,一个用来保存节点数,一个用来保存节点之和,最后除。对于深度优先而言DSF函数需要四个参数,根节点,当前层数,节点数队列,节点队列DFS
2020-09-12 11:03:14
189
原创 面试总结(1)
首先自我介绍,大概讲了自己在大学的经历,不小心给自己挖了个坑,说自己对于知识比较渴望,然后就出不来了。第二点在自己的知识介绍里着重强调了avl树,红黑树,智能指针的掌握情况比较好但是情况和实际情况不同第三点在介绍stl中的vector和stl中的差别例如插入等操作没有介绍清楚第四点在代码中有三个合并链表,堆排序没写出来。(30%太紧张+70%知识储备不足)...
2020-08-20 11:05:50
173
空空如也
在win10平台下MySQL Connector/C++的使用错误
2024-05-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人