自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++封装dll lib

_declspec(dllexport) 用于导出类和函数,__declspec(dllimport) 用于导入类和函数。

2024-06-12 15:05:06 435

原创 UEc++ Override

用以检测当前函数是否可以重写。

2024-06-11 16:49:02 325

原创 UE多人游戏中ServerTravel不起作用/无效

在项目设置中勾选cook everything in the project content directory后解决。在第一关中,可以travel到第二关,但第二关中Servertravel失效,无法Travel到第三关。

2024-02-18 11:01:43 458

原创 UE4 利用行为树实现对话系统-3

3

2022-06-22 17:40:37 652 1

原创 UE4 利用行为树实现对话系统-2

1

2022-06-21 19:16:27 475

原创 UE4 利用行为树实现对话系统-1

2

2022-06-12 18:21:14 564

原创 UE4CPP String转换与C++转换

CPP

2022-05-16 12:29:28 283

原创 奇怪问题 SpawnAcotor后无法控制(无法调ADDmovementinput)

动态创建spawn参考https://blog.csdn.net/ln_polaris/article/details/54346319SpawnActor。如果是Character类,要继续调用Spawn Default Controller方法

2022-03-29 17:11:33 871

原创 UE4arrray

数组ADD:添加,可重复ADDUNIQUE:唯一,不可重复APPEND:将两个数组合并Clear:如不需要数组,可清除数组Contains:判断容器是否含有0,如果含有则返回TrueFindItem:想要去寻找某个元素,配合Get使用则可以定位到数组中某个元素ForEachloopWithBreak:可打断,如图get(a copy):从Array中复制一个Get(Ref):引用。修改内容时对应元素也会修改Insert:插入,在对应位置插入一个元素IsValidIndex:判断元素是

2021-12-23 22:00:09 615

原创 Pragma Once

为防止其它文件包含我们时发生重复1.#pragmaonce这个宏有什么作用?为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。2.两者的使用方式有何区别?示例代码如下:复制代码//方式一:#ifndef SOMEFILE_H#define SOMEFILE_H… … // 声明、定义语句#endif//方

2021-10-13 11:33:06 205

原创 C++ 第三章 类函数Lambda技巧

为什么要写Lambda而不是单独去写一个函数?比如当前函数重复次数非常少,只是当前函数内部实现次数较少的函数我们可以把这个重复率高实现次数少的函数携程一个lambda,然后去调用,这样我们就只需要维护一套代码创建一个Test类给他一点变量然后写一个Iint函数class FHelloTest {public: FHelloTest(); void Init();private: int a; int b; float aa;};然后在Iint构造中写一个Auto函数,给它一个&

2021-10-13 11:08:18 127

原创 C++第三章 Lambda技巧

Lambda可以定义在函数中,类中什么是lambda?比如我们在main中创建一个auto函数(方括号代表我们是否需要往作用域里面传内容)然后打印int main() { auto Hello = []() { printf("Hello \n"); }; Hello(); return 0;}会输出Hello那如果我们给他一个参数然后直接传呢会发现有错误,当前是不能直接传的因为这是一个指针,而我们的Hello是一个类似数组的东西所以我们需要如下int main() {

2021-10-12 11:33:27 161

原创 C++ 第三章 虚函数原理

如下,我们有一个FHello通过sizeof的方法获取并打印class FHello {};int main(){FHello o ;int len = sizeof(o)cout<<"大小"<<len<<"字节"<<endl;}输出为1这一个字节只是一个占位字节,只是为了占位;那么如果有一个类继承自它呢?class FHello {};class FHello1:public FHello{};int main(){FHe

2021-10-08 11:50:08 166

原创 C++ 第三章 final的用法

一旦一个虚函数被声明为final,意为这个类(或类中的这个函数)到现在就终止了派生类不能再重写它。它不允许被继承class FNewObject:public IInterface{public: FNewObject() {} virtual void Init() final;//带0则为纯虚函数 virtual void Distroy();};class FNewObject1 :public FNewObject {public: FNewObject1(){} virtu

2021-10-05 14:58:47 432

原创 C++ 第三章 纯虚函数Virtual报错

Virtual 后的函数=0则为纯虚函数#include <iostream>using namespace std;class FA {public: void Func1() { printf("FA::Func1 \n "); } //void Func1(int a) { //} //void Func1(int a, int b) { //} //void Func1(int a, int b, int c) { //}};class F

2021-10-05 14:41:43 578

原创 C++ 第三章 虚函数和普通函数调用执行区别

下面的代码会输出FB::Func1FB::Func1#include <iostream>using namespace std;class FA {public: virtual void Func1() { printf("FA::Func1 \n "); } //void Func1(int a) { //} //void Func1(int a, int b) { //} //void Func1(int a, int b, int c) { /

2021-10-05 14:32:18 295

原创 UE4 Break Hit Result

参考的教程:https://zhuanlan.zhihu.com/p/33529865https://www.52vr.com//extDoc/ue4/CHN/Engine/Physics/Tracing/Overview/index.html

2021-09-29 10:53:42 659

原创 C++ 第三章 重载在继承中的问题

问题:虽然FB继承了FA,FA又拥有Func函数但是当前的FB已经有了FUnc,C++会认为FB中是拥有其它的重载的Func函数的而不会去父类FA中搜索所以我们重载的第一个特性就是如果你的子类跟你的父类有一个相同的函数,但是你的父类有很多个这样的重载的函数,那么它只会在你的子类找,而不会在你的父类找解决方法就是把你子类的函数注释了(哈哈这个其实就是一个多态了也就是一个函数有多种形态的表现方式如果你这样调用它也只会调用你的子类FB中的Func1;如果你想要让它调用父类的Fun1这样

2021-09-24 15:23:29 116

原创 c++第三章 重载

什么是重载重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载,这个过程称为方法重载;———————————————— 版权声明:本文为CSDN博主「Thinkingcao」的原创文章,遵循CC 4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.ne.

2021-09-24 15:07:56 93

原创 UE4 C++ 无法执行BeginPlay

GameMode问题将继承的Gamemodebase改为Gamemode

2021-09-17 09:39:02 1059 1

原创 根组件-----

根节点Actor 默认有DefaultSceneRoot创建3个静态网格体FirstMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("FirstMesh"));SecondMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SecondMesh"));ThirdMesh = CreateDefaultSubobject<UStatic.

2021-09-16 17:47:31 450

原创 C++第二章 重载等号操作符的深拷贝问题

1

2021-09-06 10:35:03 437

原创 C++ 第二章 重载左移操作符cout打印

再给定义操作符然后就可以调用了再写一个结束操作符再重载它剋穿自己,如果我们检测是fistream的话,那么我们就打印\n然后我们再调用一下但是此时我们是不能够使用int类型的,因为我们没有给他重载int那我们重载一下呢再往下看就支持了float,double之类的也是一样的如果double显示不完整,就改一改大概就是可以定义自己的打印,操作方式之类的...

2021-09-03 11:11:16 153

原创 C++第二章 namespace的使用技巧

命名空间的写法就是namespace+XXX我们可以在命名空间写函数,类,枚举,结构体等跟我们在外面写的函数是一模一样的调用方式也比较简单XXX::函数::内容相同名字的namespace可以定义很多个我们发现一个规律就是,在namespace中可以定义十分多的内容,并且你可以重复使用你的namespace;什么是namespace?namespace:通过它来区别使用的代码和函数还有类;比如函数已经在上面存在过了,我们还需要再写一个相同名称的函数,我们就可以通过namespace把它包

2021-09-03 10:49:30 153

原创 C++ 第二章 浅拷贝与深拷贝 浅拷贝bug

拷贝构造函数

2021-08-17 23:40:22 123

原创 C++ 第二章 this指针

this指针是什么?this是我们当前类用来指向当前地址的常量的指针const修饰的指向的内容是不可以修改的,但是我们的指针是可以修改的比如我们new一个TestA。通过以下方式来给指针赋值这样我们的TestA指向的就是里面的内容但是,我们不可以用指针修改它的值也就是说,指针本身是可以移动的,但常量不可修改那么this指针呢?其实本身我们在构造时,它就有this指针,不过C++给你隐藏了它应该是这样的,且它是Const修饰的一个指针;...

2021-08-03 12:31:11 87

原创 C++ 第二章 初始化列表

*初始化列表一定要按照你当前声明的顺序*初始化列表的调用时机是比下面的快速的初始化列表可以调用父级

2021-07-29 10:39:10 122

原创 C++ 第二章 类构造函数与析构函数

类构造与析构

2021-07-29 10:27:42 101

原创 C++ 第二章 友元函数

友元函数

2021-07-28 15:27:52 62

原创 C++ 第二章 友元类

友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:friend class 类名(即友元类的类名);其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。class FTestClass { friend class FTest2;//申明好兄弟public: void Hello(){}private: void.

2021-07-26 21:44:40 164

原创 C++ 第二章 类的虚继承

虚继承(Virtual Inheritance)虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如下图所示。类D继承自类B1、B2,而类B1、B2都继承自类A,因此出现如图所示的局面(非虚基类)。以下是上次我整的那个,顺便用来举例了#include <iostream>#include <winerror.h>u

2021-07-23 12:37:59 154

原创 C++ 第二章 类的继承与成员函数

1

2021-07-19 17:09:32 244 1

原创 C++笔记 第二章 类成员内联

inline是C++关键字,在函数声明或定义中,函数返回类型前加上关键字inline,即可以把函数指定为内联函数。这样可以解决一些频繁调用的函数大量消耗栈空间(栈内存)的问题。关键字inline必须与函数定义放在一起才能使函数成为内联函数,仅仅将inline放在函数声明前面不起任何作用。inline是一种“用于实现”的关键字,而不是一种“用于声明”的关键字。可以通过上图方式获取私有成员§;以后您想要获取私有成员,而又不希望它被赋值、被裸露出来,那么就可以使用inline的方式,为什么说它效率比较高.

2021-07-14 15:09:04 95

原创 C++笔记 第二章 类成员函数

class函数与结构体大差不差但class默认权限为私有,class函数也有析构;最好将它与析构放到公共,因为它要有外部程序调用;因为如果你直接写,那么在main函数中你创建函数的时候会发现无法创建;如果你有一个全局函数,"::"可以直接调用到全局函数(类也可以)(可以省略);静态函数可以直接进行访问;(结构体访问也相同)成员函数则必须通过实例化的对象来访问(结构体访问也相同)成员函数是可以直接调用静态函数的,但静态函数不能够直接调用成员函数(静态函数只能放一些静态或全局

2021-07-14 10:23:22 96 1

原创 C++ 第二章 结构体成员权限

可以对内部成员进行赋值私有变量:private:Q:为什么要进行公共或私有设置?A:比如当前游戏被人给盗了,它用某种方式观察到了结构,用作弊的方式来对您的变量进行修改,但是您当前变量通过了这样的设置,它便无法访问到您的内部成员。它首先在编辑器的时候就编译不过;保护protected;与私有private一样,外部是无法访问的;但是它的派生类可以访问此变量/函数;我们有时也可以通过暴露接口来调用私有函数结构体的构造构造与析构在C++中除了类中可以有构造函数和析构函数外,结构体

2021-07-13 16:41:10 704 1

原创 CPP笔记 第一章 C与C++区别

<>代表的是所有的系统级的文件,而非自己的。自己的文件引用为“”,如“SSSS.H”

2021-07-13 16:17:06 569 1

原创 C++笔记 形参与实参

形参与实参此处的50,20 都是参数,num1,num2也是此参数,那么这两个参数的含义是相同的吗?显然不同所以,定义函数时使用的参数为形参而调用函数时传递的参数为实参,是实实在在的参数。形参的作用是为了它能接收外来数据。定义了形参后,在调用时才能够传递数据。在当前代码中,num1与2 需要被当成变量来进行计算,然后将结果保存在Result中。那么在编写中,我们显然是不知道它们的具体数值的,这个数值是在我们调用函数时通过实参来传递的,所以我们在定义函数时,都会这样定义一些形式上的参数。

2021-07-06 11:51:06 87

原创 C++指针笔记

一、指针的基本概念以及用法int a =10,b=20;a和b此时存储在内存中a与b储存在栈中附:栈与堆堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式;(2)数据结构场景下,堆与栈表示两种常用的数据结构。栈通常是一个预定义大小的内存区域,通常约为2兆字节左右堆也是一个预定义了默认值的区域。但是它可以生长并随着应用程序

2021-07-06 11:36:31 140

原创 UE4 Boss ai 试水-6 贴身行为实现与绕后

先贴新黑板键(控制是否绕后)再是行为树贴身差不多有三种行为击退、后退,绕后先把击退加上去然后再弄动画通知然后是击退的蓝图,写在动画蓝图里了Lunch character那里是获取boss正前方方向,然后给它加上六百,再把这个向量加给玩家需要注意的是,这个Visibility检测会默认忽略玩家的通道改下玩家碰撞就行了然后是绕后,还是用EQS做的新EQS,参数看着调新建一个EQS查询中心(这名词我胡诌的)要用的类还是给EQS加个Dot建议先调过滤(Filter)

2021-06-01 10:03:32 435 3

原创 UE4 Boss AI试水-5 后撤步!777! 与攻击判定

先补充一下观察器终止的参数设置。self即为终止自身,Lower priority即为除自身外比自身低优先级的任务终止,Both则为自身以及比自身低优先级终止(自己以及自己右边的,都终止)然后就是后撤步然后是后撤步任务(BTT_DODGE)顺便提一下这里的On completed是在播放完毕后才执行的东西,而它头上的三角是在动画执行时同时执行的东西。最后执行的Move Dodge是写在Boss蓝图中的基本就是在执行时提前保存一下当前位置,然后再给这个保存的向量再减一减,再用插值和时间轴来

2021-05-30 13:43:40 457

空空如也

空空如也

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

TA关注的人

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