自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SVN更新提交卡顿问题的一种解决方案

SVN更新提交卡顿问题的一种解决方案

2022-08-11 15:07:12 3492

原创 UE4 C++之实现二阶贝塞尔曲线

任务:实现物体沿着二阶贝塞尔曲线运动原理介绍参考链接:贝塞尔曲线 总结_PlayBoy's 部落格-CSDN博客_贝塞尔曲线关键代码如下:BezierCurve.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Bez

2021-10-09 15:50:30 1123

原创 UE4 C++学习之解决中文输出乱码的问题

任务:解决UE4C++中文输出乱码的问题解决方案:将涉及到输出中文的文件编码格式改为UTF-8(VS默认为GB2313)。第一步:自定义菜单栏因为VS2019高级保存设置默认是没有开放的,所以我们需要先自定义菜单栏将其开放:第二步:设置文件编码为UTF-8这样,C++的中文到UE4的输出就不会乱码了。...

2021-08-01 16:18:25 3527

原创 UE4高级运动系统学习笔记之八方向融合冲刺

任务:将角色冲刺动画融合入八方向移动,并且使用动画图层对动画蓝图进行解耦合。第一步、新建动画图层,将原来的八方向移动状态机挪至动画图层中,并对前进混合空间和冲刺动画进行融合。第二步、动画图表中处理动画图层的输入和输出。(这里注意所有的动画输入都要添加同步组,不然混合出来的结果会很奇怪)第三步、将八方向移动状态机里的混合空间全部换成动画图层中设置好的动画缓存。小结:通过动画图层的使用,成功将基础的动画混合空间从状态机中脱离出来。这样动画相关逻辑均在动画图层中处理,而基础动画资源的设

2021-07-05 16:47:04 719

原创 UE4高级运动系统学习笔记之八方向移动

任务:实现角色的八方向移动混合第一步、同步角色控制器旋转到动画蓝图,并把角色旋转到移动方向选项给关掉。第二步、动画蓝图根据同步值计算移动方向。第三步、根据移动方向切换八方向移动状态机。每一个状态机都有其相应的动画混合原始教学视频合集链接:https://www.bilibili.com/video/BV12f4y1r71N(作者:五谷延年)...

2021-07-05 15:36:14 1792

原创 UE4高级运动系统学习笔记之冲刺混合

任务:实现角色跑步到冲刺的过渡混合。第一步、动画蓝图同步角色速度和加速度第二步、根据加速度和速度计算过渡动作和冲刺动作的混合比例(这里需要重点注意加速度是基于世界坐标系的,需要转化为相对角色的相对坐标系)第三步、修改Pose输出方式(这里可以调整过渡动作和冲刺动作的混合参数)原始教学视频合集链接:https://www.bilibili.com/video/BV12f4y1r71N(作者:五谷延年)...

2021-07-02 17:50:40 216

原创 UE4高级运动系统学习笔记之移动步幅与走跑混合

任务:通过角色状态精确控制其走跑的动画表现(由于内容较多,此篇只记录思路,读者自行实现)第一步 同步角色状态到动画蓝图(主要是速度2D和步态(走、跑、加速跑))第二步 新建走跑混合空间的设置第三步 计算走跑混合,步幅混合,动画播放速率第四步 根据前三步所得的值,控制输出动画原始教学视频合集链接:https://www.bilibili.com/video/BV12f4y1r71N(作者:五谷延年)...

2021-07-02 11:07:05 505

原创 UE4高级运动系统学习笔记之数据驱动

任务:角色状态变化时,通过数据表格配置修改角色运动属性1、准备DateTable,我这边直接复用了ALS插件的MovementModelTable2、BeginPlay时,通过配置好的Datable,获取MovementSettingState信息3、根据获取到的MovementSettingState数据,更新角色运动属性(备注:Tick相关函数可参见上一篇:UE4高级运动系统学习笔记之步态切换)...

2021-05-21 14:20:04 475

原创 UE4高级运动系统学习笔记之步态切换

任务:实现角色各种步态切换及对应速度修改1、步态变量储存在枚举值Gait中2、通过按键输入修改步态Gait3、在Tick中调用UpdateCharacterMovement函数更新MaxWalkSpeed,达到改变最大速度的目的...

2021-05-20 11:56:27 348

原创 Lua程序设计之位和字节

1 位运算位运算符& 按位于 | 按位或 ~ 按位异或 >> 逻辑右移 << 逻辑左移 一元运算符~ 按位取反 (注:在其他一些语言中,异或运算符位^,但在lua中,^代表幂运算)2 无符号整型数 lua整型默认位有符号整型数,使用一个bit来储存符号位。lua语言不显示支持无符号整型数。 lua语言输出常量的方式:默认将其作为有符号整数型进行处理。但可以通过选项%u指定...

2021-04-19 00:53:47 592

原创 Lua程序设计之闭包

在Lua语言中,函数是严格遵循词法定界的第一类值。 1 函数是第一类值function foo(x) return 2*x end----等价于foo = function(x) return 2*x enda = {p = print} -- 'a.p'指向'print'函数a.p("Hello World") --> Hello Worldprint = math.sin -- print现在指向sine函数a.p(print(...

2021-04-02 16:09:25 141

原创 UE4 C++插件开发之新增编辑器工具栏按钮

任务:在动画编辑器界面工具栏添加新按钮GetAnimNotifyInfo第一步、新建插件

2021-03-23 01:20:48 1666

原创 C++ 文件读写

1、文件模式文件模式 in 以读方式打开 out 以写方式打开 app 每次写操作前均定位到文件末尾 ate 打开文件后立即定位到文件末尾 trunc 截断文件 binary 以二进制方式进行IO ...

2021-03-16 11:45:37 84

原创 UE4 官方动画示例学习笔记(一)

1.1 使用动画资产 使用动画资产,播放特定动画。1.2 回调播放特定动画 方式一:回调函数触发PlayAnimation函数,直接播放动画 方式二:回调函数修改变量,动画蓝图切换状态机...

2021-03-09 15:54:00 1231

原创 lua程序设计之补充知识

1 局部变量和代码块 Lua语言中的变量在默认情况下是全局变量,所有的局部变量在使用前必须声明。 局部变量的生效范围仅限于声明它的代码块。 x = 10 -- x 为全部变量 local i = 1 -- i 为局部变量 有些人认为,在代码段的中间位置声明变量是一个不好的习惯,实际上恰恰相反: 1、在需要时才声明变量可以避免漏掉初始化这个变量; 2、通过缩小变量的作用域还有助于提高代码的...

2021-03-03 17:50:45 161 1

转载 UE4 C++学习笔记之C++输出字符串及FString字符串转换

本篇文章将和大家介绍UE4中C++输出字符串和FString字符串转换,有不清楚的可以看看。C++输出字符串输出字符串到output log中FString filePathUE_LOG(LogTemp, Log, TEXT("%s"), *filePath);UE_LOG(LogTemp, Error, TEXT("Hello,World!"));输出字符串到屏幕上FString filePath;GEngine->AddOnScreenDebugMessage(-1

2021-02-25 16:33:35 1625

原创 UE4 Unlua 调用AIMoveTo函数

Unlua实战:在Unlua中调用异步蓝图节点:AIMoveTo异步蓝图节点:在蓝图节点的右上角有时钟图标。注意:异步节点可以在EventGraph/Macros中使用,但是无法在蓝图函数中使用。AIMoveTo节点:实现AI自主寻路,且能异步回调执行成功或失败的委托函数,且返回移动结果枚举值。源码分析AIMoveTo蓝图节点对应C++的基类为 UK2Node_AIMoveToUK2Node_AIMoveTo 继承至异步Task节点基类 UK2Node_BaseAsyncTask,并在构造

2021-02-01 22:51:27 1722

原创 C++ 多线程学习笔记

线程的创建与启动1、使用C++11新标准写多线程程序,首先需要添加头文件thread#include <thread>2、创建线程对象thread MyThread1(function); //MyThread为线程对象名,function为可调用对象名(如函数,可调用对象等)3、启动线程a)使用 join 函数(等待线程)MyThread1.join(); //线程MyThread1从此处开始运行,同时阻塞主线程。等到MyThread1线程执行结束,主线程才

2021-01-17 23:02:23 95

原创 UE4 学习笔记之粒子系统基础

什么是粒子系统?粒子系统:用于创建并管理粒子的系统。粒子:一个粒子本质只是游戏世界里的一个点。通过粒子系统,我们可以控制粒子的出现和表现。发射器:粒子系统的组件,负责生成粒子。模块:发射器的组件,模块负责控制发射器粒子的表现。模块通常包括许多参数,如粒子的材质和初始速度。Cascade:粒子系统编辑器,由四个主要面板组成 1.Viewport:该面板用于展示粒子特效的预览效果。 2.Details:显示你选中的任何组件(发射器,模块等)的参数。如果没有任何组件选中,则显示粒子系统...

2021-01-16 22:09:21 1920

原创 UE4 C++ 相关问题及解决方案汇总

问题1:error LNK2019: 无法解析的外部符号 LNK1120: 1 个无法解析的外部命令原因:使用了某些函数,但是在<项目名.Build.cs>文件中却未添加相关模块。解决方案:在<项目名.Build.cs>文件中添加相关模块。问题2:项目编译成功,但进行Debug时在构造函数某一语句中出现断点原因:可能是执行该语句时引擎有些东西没有加载好。解决方案:将改语句从构造函数剪切至BeginPlay函数中。...

2020-12-24 10:12:52 7868

原创 初识3D渲染:GPU与显存

GPU: Graphics Processing Unit:图形处理单元 1、从硬件上支持T&L 2、高并行结构 3、拥有更多的ALU(arithmetic logic unit) 4、流式并行计算Shader:能在屏幕上着色或绘制某些东西的程序,是运行在GPU上的一组命令。纹理:计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案。 GPU图形处理步骤vertex shad...

2020-12-22 17:34:06 2147

原创 UE4 制作玻璃材质总结

玻璃材质总结材质基本项的设置: 混合模式选:半透明 光照模式可选:表面半透明体积(开销较小) 表面前向着色(开销较大,效果更好) 二者计算复杂度相差400玻璃效果的实现: 粗糙度:一般设为0即可 金属感(或者选高光度,二者效果几乎相同):视情况调整,主要影响材质的反射效果 不透明度:视情况调整 折射:应用在球体上的宏观表现:>1,表现为缩小 ...

2020-12-17 17:19:15 7718

原创 git基本命令

git清空缓存区git rm -r --cached .

2020-12-15 21:55:11 59

原创 快速解决github网站不显示图片的问题

修改hostsC:\Windows\System32\drivers\etc\hosts在文件末尾添加:# GitHub Start 192.30.253.112 Build software better, together 192.30.253.119 gist.github.com151.101.184.133 assets-cdn.github.com151.101.184.133 raw.githubusercontent.com151.101.18

2020-12-14 09:50:16 163

原创 UE4 C++学习笔记之番外篇:Android打包基础

任务:将工程项目打包为Android apk文件第一步、安装Android Codeworks相关组件找到虚幻引擎安装目录,打开Engine / Extras / AndroidWorks / Win64文件夹,使用CodeWorks forAndroid安装程序来安装Android内部的Codeworks版本。运行程序后,全部采用默认设置,点next按钮,安装程序会在C盘为我们创建两个文件夹,如下:因为被墙的原因,有一些组件会下载失败,这时我们需要查看NVPACK文件夹下的loca

2020-12-10 15:33:34 438

原创 UE4 C++学习笔记之读取Json

任务:通过指令读取Json文件并打印相应Log第一步:工程名.Build.cs文件中添加相关依赖("Json", "JsonUtilities");第二步:在PlayerController类中添加相关函数;EJsonPlayerController.h代码如下:// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinim

2020-12-08 17:26:30 991

原创 UE4 C++学习笔记之Json基础

json全称:JaveScript Object Notation:轻量级数据交互格式语法:数据形式(键值对):"key":"value";数据由逗号分隔,大括号保存对象,方括号保存数组;实例:{"students":[{"name":"张三","adress":"山东"},{"name":"李四","adress":"天津"}]} //一个students数组,存储了两个对象,每个对象有name和value属性可嵌套;实例:{"name":"Michael","address"

2020-12-08 11:50:26 167

原创 UE4 C++学习笔记之创建多播委托

任务:利用多播委托实现同时控制场景中的多个灯光1、以Actor类为基类,创建MyTriggerBox类,在该类中声明多播委托FMultiDelegate,并实现该多播委托的触发;2、以Actor类为基类,创建蓝图PointLight类,利用蓝图绑定多播委托FMultiDelegate与灯光控制函数。...

2020-12-05 15:35:53 612

原创 UE4 C++学习笔记之单播委托

任务:创建单播委托,实现触发器控制灯光的亮和灭1、DelegateTestGameModeBase.h函数声明委托2、以Actor为基类创建TriggerListener类,在该类中实现灯光控制函数并绑定1中声明的委托3、以Actor为基类创建MyTrigger类,在该类中实现1中声明的委托的触发...

2020-12-05 12:09:59 635

原创 UE4 C++学习笔记之初识TArray

任务:学习使用官方文档TArray的一些基本操作TArrayTest.h代码如下:// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "TArrayTest.generated.h"UCLASS()class LEARNTAR

2020-12-04 19:49:12 1866

转载 Git版本前后切换

Git 版本前后切换主要内容:1) HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。2)用git log可以查看提交历史,可以查询到我们要返回版本的ID。3)版本回退之后,需要再次回到会退前,可以用git reflog查看命令历史,可以查看到每次命令的记录,里面会有我们需要的版本ID。假设在工作中,你将辛辛苦苦写了一半的代码改乱了,想要回到这次修改之前,而不至于所有的劳动功亏一篑,这时候我们该怎么做呢

2020-11-16 06:38:13 410

原创 数据结构与算法:A*寻路算法的C++实现

任务:用整型二维数组模拟地图(1代表墙壁,0代表通路),给定起点坐标和终点坐标,用A*寻路算法查找最短路径main.cpp代码如下:#include <iostream>#include <vector>#define ROWS 12 //地图行数#define COLS 12 //地图列数#define SC 10 //直线代价#define OC 14 //斜线代价using namespace std;//地图节点

2020-11-05 09:44:00 420

原创 数据结构与算法:广度寻路算法的C++实现

任务:初始化一个10*10的地图(利用整型变量模拟,1代表墙壁,0代表通路),给定起始位置和目标位置,利用广度寻路算法找到最短路径。main.cpp代码如下:#include <iostream>#include <vector>#define ROWS 10#define COLS 10using namespace std;//枚举类型,表示探索方向enum Direct { D_up, D_right, D_down, D_left};//定义辅

2020-11-03 04:08:03 182

原创 数据结构与算法:深度寻路算法的C++实现

任务:使用C++实现深度寻路算法。效果:在一张由1和0组成的二维地图中,1代表墙壁,0代表通道,输入终点和起点,利用深度寻路算法找出由起点到终点的路径。main.h代码如下:#include <iostream>#include "MyStack.h"#include "windows.h"//地图行数,列数#define ROWS 8#define COLS 8using namespace std;//枚举类型,探索方向enum Direct {D_up,

2020-11-02 21:20:46 685 4

原创 数据结构与算法:利用数组实现完全二叉树(C++)

任务:使用C++语言,通过数组的形式来实现一颗平衡二叉树,包括树的创建,添加结点,查找结点,删除结点等功能。main.cpp 代码如下:#include "CompleteBinaryTree.h"int main(){ CompleteBinaryTree<char> tree; for (int i = 0; i < 10; i++) { tree.Add('A' + i); } cout << "先

2020-10-31 02:57:17 1466

原创 数据结构与算法:有序二叉树的C++实现

任务:利用C++实现升序二叉树算法,包括二叉树的创建、先序遍历、中序遍历、后序遍历以及增删改查等功能。main.cpp代码如下:#include <iostream>#include "BinaryTree.h"using namespace std;int main(){ Tree<int> tree; //插入若干结点 tree.insert(23); tree.insert(588); tree.insert(45

2020-10-30 03:00:49 135

原创 数据结构与算法:初识树

任务:使用C++编写一个简单的树类型头文件Tree.h如下:#pragma once#include <string.h>//定义树类型template <class T>class MyTree { T data; // 数据 MyTree* pParent; // 父节点地址 MyTree* pBrother; // 兄弟节点地址 MyTree* pChild; // 子节点地址public: MyTree(); ~MyTree();

2020-10-16 01:06:37 85

原创 数据结构与算法:汉诺塔问题(C++)

任务:利用C++编码解决汉诺塔问题汉诺塔问题简介:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。代码如下:#include <iostream>#define NU

2020-10-15 19:22:43 1214

原创 数据结构与算法:二分查找的C++实现

任务:分别用递归和循环两种方式实现二分查找算法(在某有序数组中查找特定的数字并返回其在数组中的下标)代码如下:#include <iostream>#define NUM 20using namespace std;void Print(int* a, int len); // 显示当前数组void BinarySearch_Recursion(int* a, int left,int right,int value); // 二分查找(递归实现)void Binar

2020-10-15 18:03:12 239

原创 数据结构与算法:归并排序的C++实现

任务:利用C++实现归并排序代码如下:#include <iostream>#include <string>#define NUM 10using namespace std;void Print(int a[], int len); // 打印数组信息void Merge(int* a, int l, int m, int r); // 有序数组合并void Recursion(int* a, int l, int r); // 合并递归void

2020-10-15 00:43:17 187

空空如也

空空如也

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

TA关注的人

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