- 博客(32)
- 收藏
- 关注
原创 UE4_如何在UI中设置动态图片
导入3D场景中/导入到UI中 1>打开PS,先把想要的动态图拆分成序列帧(有序列帧的请忽略这一步,直接看) 前缀任意,点击运行后会得到这样一些图片 2>拆分完成后合并图片为联系表 这里的行列,根据你图片数量*对应的尺寸,算出宽度高度的像素即可,我是26张图,5*6=30张能摆开就行. 3>前期准备工作完成,打开UE,导入 我们把图片序列和联系表格都导入到UE中,先操作图片序列部分. 创建完成后选中创建的所有Sprite,再次右键 ...
2022-05-17 13:35:32
5150
3
原创 UE4打包问题_No target name was specified on the command-line
今天从别人那里拿了个项目做些小功能,闲着没事打了个包,结果运行不到1s就报个错. 这个错误很简单,但是想纪录下主要思路,防止后面忘记. 先说结论,遇到同样错误的朋友看完结论就可以右上了(点个赞再走啊~) 命名不能以"Test"命名,会冲突,导致编译失败.修改项目名称即可. 下面就是遇到这种问题的思路了: 1> ...
2022-03-18 14:39:36
3764
1
原创 如何整合OSS到UE4_对OSS基础操作(一)
如何整合第三方库到UE4 注:此处关于如何使用CMake解析阿里云的OSS插件不赘述,默认大家已经解析好了阿里云插件 如何修改已经CMake好的插件文件 1:在UE4里创建一个空白插件(SimpleOSS),并新建一个文件夹OssTest 2:先打开第三方库文件里的Third_Party文件 里面的lib 和 include 是第三方库的第三方库(依赖),直接拖进OssTest 3:打开第三方库文件Sdk,把里面的include文件也拖进OssTest 4:打开之前用CMa..
2022-02-27 18:51:14
681
原创 笔记_新插件作为模块移动原插件_Widget里自定义属性_防止对象/变量回收
新插件作为一个模块移动到原来插件上 1:移动原来插件的Source下的文件夹过来 2:修改三处文件. <1>新插件.build.cs 添加上关于你要移动到哪个插件的名字 <2>最外面的插件.uplugin,添加上你添加的模块名字 <3>修改原来插件的style.cpp文件,FindPlugin后面的名字写你移动到的插件名 3:重新编译即可. Widget里自定义属性 SLATE_ATTRIBUTE ...
2022-02-27 18:17:20
200
原创 笔记_Slate部分知识点/编译器扩展部分_世界大纲中物体右键添加自定义操作_对文件栏文件右键进行操作_添加一个Actor detail面板属性_自定义映射变量
零散知识点 //菜单分隔符 Builder.AddMenuSeparator(); //子菜单 Builder.AddSubMenu( LOCTEXT("OOO","JJJJ"), LOCTEXT("CCCC","KKKK"), FNewMenuDelegate::CreateRaw (this,&FMyToolModule::SubPullDownBar) ); //图片Slate Builder.AddWidget( SNew(SImage), LOC
2022-02-27 18:11:02
675
原创 笔记_编译器插件文件转Source中_*&简单使用_Lambda断点问题_编译器扩展小知识点
编译器扩展插件转Source 一:先改文件结构 将文件剪切直接粘贴到Source中,并修改目录下的 文件目录下为,1,private 2,public, 3Resources,4,xxxx.build.cs 二:代码修改 首先在xxxEditor.Target.cs文件中,添加好对应的模块, 然后修改原来插件下面的xxxStyle.h,找到ReloadTextures 方法,点开后修改原来指向插件的路径,现在指向本身, 例子: Style->SetConte...
2022-02-27 17:53:12
216
原创 笔记_断言_共享指针_共享引用_转换_弱指针_单播/多播/动态代理
一.断言 1.checkNoEntry(); 检测程序进入到这个函数中了吗,进入则断开 2.checkNoReentry(); 检测函数是否被执行了两次; 3.checkNoRecursion(); 递归检测,如果递归就崩溃. 4.ensure(0 && "打印信息"); 其中0为bool,为零会在此打断,程序会阻塞在这里,用于调试 二.共享指针(TSharedPtr) 1.优势 1> 可以避免循环引用 2> 由系统管理释放,无需手动操作 3> 存在
2022-02-27 16:19:54
572
原创 UE4_Instigator_人懵逼了就会懵逼纪录1
今天被这玩意气到了,Instigator翻了翻源码 在4.27中是这样的 私有类,无法子类访问,了解,然后想了想,有没有GetInstigator 找了下,还真有 而且还是个Public,问题按理说解决了 并不是 Rider开始疯狂报错,:FAITestBase.error!.大约48个错,绕了很久 最后花了20分钟,发现Rider不知道怎么引用了个这个头文件??? 另外,找了找4.24之前的源码 好吧,之前还是共有变量,24后改为私有了. 可能是写迷糊了,对着南墙就撞. .
2022-01-23 18:42:12
1073
原创 UE4每周小功能_UI二级菜单
做功能的前提是先设计,后实现 思维导图 分析 这个功能比较简单,设计没有什么复杂的地方,主要点在于数据在各级菜单之间传递,理解这点,做出来很容易. 实现过程 由大到小 主菜单 一级菜单 二级菜单 第一次写的比较简陋,很多不好的地方 等会会出一个简单的视频版教程.修正一些问题 ...
2021-12-18 09:30:39
1000
1
原创 笔记_New与Delete_operator new 和 operator delete_内存池
New与Delete New不加括号的差别 1>空类的话无区别。 2>有成员变量,带括号的会把一些和成员变量有关的内存清零,并不是整个对象的内存为零 3>当有构造函数的时候,两种写法一致,不会把内存清零了。由构造函数负责了。 class Test3d { public: Test3d() { cout << "Init" << endl; } ~Test3d() { cout <&...
2021-12-07 16:48:21
545
原创 笔记_Atomic详解_复习_Async与Thread的区别_recursive_mutex_虚假唤醒_线程池
Atomic详解 一般的原子操作,针对++,--,+=,&=,|=,^=是支持的,其他的可能不支持 比如std::atomic<int> myato = 0; myato = myato+1; 这种结果会不对. Async深入 复习 Async:用来创建一个异步任务. std::launch::deferrer[延迟调用] std::launch::async[强制创建一个新线程] async为什么不和Thread一样叫创建一个线程呢? 因为async有时候不一定创建一个新线程,
2021-12-06 22:48:35
332
原创 UE4每日学习笔记_AI篇(五)
AI躲避玩家位置 1.修改EQS_FindPlayer,在ProjectionData中的TraceMode,修改为几何体, 这样可以无视导航,而是做一个垂直判定(垂直偏移),使得均匀球体可以分布到无导航区域. 在FindPlayer中添加其他几个部分详细介绍 此处会过滤玩家看不到的位置 如图所示,此处添加一个判断Npc距离玩家的位置 此处添加一个周围环境判定,其实线性不动,只是把得分改成-1,也可以起到同样的效果. 最后在行为树中运行即可 运行效...
2021-12-05 12:11:37
1207
原创 UE4每日学习笔记_AI篇基本概念
什么是EQS(环境查询系统)? 是UE4AI系统的一个功能,用于从周围环境中收集数据 在EQS中,可以通过不同种类的测试向收集的数据提问,这些测试会根据提出问题的类型来生成最适合的项目 生成器 比如EQS_FindPlayer中的SimpleGrid,是生成器,用于产生将要测试和加权的 位置或Actor,生成的是一个范围,一个形状 测试节点 主要是用于测试距离,自定义的边界,点,或者追踪某些命中或没命中的事件,还有 寻路的长度等等. 在Trace追踪测试中蓝色代表过滤掉的位置,即不选择 .
2021-12-03 20:00:34
1186
原创 笔记_async_future_promise_future成员函数_原子操作std::atomic
async future 作用: 创建后台任务并返回值 定义: async 是一个函数模板,用来启动一个异步任务,启动后会返回一个future类模板对象(线程返回的结果) 实现: 可以通过调用future的成员函数get()获取结果 调用get时,等待入口函数执行完毕,拿到结果后才往下走。 wait只是等待,并不返回结果 代码: int mythread4() { cout << "mythread4()start " << "thread...
2021-12-03 16:56:55
521
原创 UE4每日学习笔记_AI篇(四)
EQS系统 前期准备 1.创建以下几个类文件 1_1>创建必要的文件 其中EQC_C是继承自EnvQueryContextBlueprintBase的类 1_2>对EQC_C修改 对这个方法重载,用一个玩家角色作为返回值 2.对EQSAIController的操作 2_1>先添加视觉组件 2_2>重载AI感知中,当AI感知发生变化方法(视觉) 代码解释:先保存看到的Actor,判断看到的Actor是否含有Player标签,并且是看到的情况下..
2021-12-02 23:55:00
1615
原创 笔记_单例设计模式_call_once_condition_variable_wait()
单例设计模式共享数据 设计模式,把项目开发经验总结,模块化。单例模式: 整个项目中,有某个或者某些特殊类,属于该类的对象,有且只能创建一个。 class mySys { public: static mySys* GetInstance() { if (m_instance == nullptr) { m_instance = new mySys; static GC cl; } ...
2021-12-02 16:55:20
729
原创 UE4每日学习笔记_AI篇(三)
Npc伤害反馈功能 首先先添加一个蒙太奇通知 打开之前的行为树,添加新的节点,并仿照听到行为设置好 在人物中添加一个攻击节点,并且如果生成的触发器碰到了玩家,那么这里会报告一个伤害事件 此处的TraceChannel为自定义通道,在人物碰撞处可看到,选择为阻挡即可判定成功 最后此处为行为树的相关设置 流控制(BlackBoard中装饰节点) 重新解释下,原先内容解释不明确 BlackBoard中装饰节点,所选中的黑板键值发生变化时,中止执行子树Self:正...
2021-12-01 22:33:53
658
原创 笔记_线程参数_多线程执行_互斥锁_死锁_unique_lock_lock_guard
传递类对象,智能指针作为线程参数 class TA { public: int cc; TA(int a) :cc(a) { cout << "构造函数执行: " << this << " threadId: " << std::this_thread::get_id << endl; }; TA(const TA& a):cc(a.cc){ cout << "拷贝构造函数执行: " <...
2021-12-01 16:44:10
415
原创 UE4每日学习笔记_AI篇(二)
改变Npc速度 NewService按钮,创立一个服务,同Task类似,只是没有返回结果 然后转换为NPC,同时新建一个变量Speed,公开后,可以直接在行为树 中设置NPC的速度. 放置位置 具体移动速度实现方法 Npc根据枚举控制行为模式 创建Task枚举变量,用于切换模式和判断,增加可读性,此处不难 完整行为树如上图 NPC到攻击范围就攻击 要点:SimpleParallel 选择模式为FinshMode---Delayed当主要任务节点完成后...
2021-11-30 23:49:09
735
原创 UE4每日学习笔记_AI篇
AI视觉感知配置 1.复制一份新的Task任务,修改PlayController,改为OwnerController,同时修改 Radius的值,修改为150,表示随机范围移动 2.在黑板中添加变量,是否看到(bool),然后在行为树中,在Sequence右键,添加装饰器(设计),设置变量值为是否看到,设置为否,下方修改为1写好的随机移动任务 3.在selector另一边填写之前写好的找玩家的方法.并也添加一个装饰器(黑板),并设置为true,其实就是ifelse. 4.行为树就这些,打开AI,并添加上
2021-11-29 23:07:10
853
原创 UE4每周学习总结_数据表_广域网_模块_模块接口_AI蓝图部分
Command 命令行r.setRes1280 x 720 w 窗口模式 f 全屏模式 打包前的设置(广域网) 1.在设置中Packaging/List of maps to include in a packaged build 点击+ 号添加数组元素,然后点击... 进行浏览选择要添加的场景 与关卡流不同,此处是跳转场景将对应的场景路径添加,打包时会将对应的关卡也一并打包。 否则打包完成后没有进行设置,游戏运行时执行跳转场景时会失败。 2.打包完成后,关闭UE4,然后编译一遍De...
2021-11-28 21:51:11
879
原创 笔记_线程概念_多进程并发_Detach()
并发,进程,线程基本概念 并发 两个或者多个任务同时发生,一个程序同时执行多个独立任务 进程 一个可执行程序运行起来了,就创建一个进程 线程 每个进程,都有一个主线程,并且主线程是唯一的,也就是一个进程只有一个主线程。 当你执行一个可执行程序,产生一个进程后,这个主线程就随着一个进程启动起来了。 F5运行的时候,进程的主线程来调用main函数的代码 线程,代码的执行通路。 除了主线程外,可以通过自己写代码来创建其他线程,其他线程是走别的地方 每创建一个新的线程,就可以在同一时刻,多干一个不同的事
2021-11-24 16:38:30
642
原创 笔记_类模板成员函数_typename_模板_类模板_可变参类模板_using
类模板成员函数 可以写在类模板定义中{}。那么这种写在类模板定义中的成员函数会被隐式声明为inline函数。 一个实例化模板,它的成员函数只有在使用时才会被实例化 注意,浮点型不能做非类型模板参数 template<class T> class FVector { public: FVector(); typedef T* FIterator; FVector& operator=(const FVector&); private: F...
2021-11-19 16:58:02
707
原创 笔记_临时对象_移动构造函数_虚基类_虚继承_类型转换构造函数_静态成员函数_模板和泛型
临时对象: int &&ref = i++; r1 = 19; i =20; ref 和 i 之间没有什么关系 一些临时对象,是代码写的问题,统一称临时变量为临时对象 产生情况: 1) 以传值方式给函数传递参数(不推荐,建议传引用,不产生临时对象) 2) 类型转换生成的临时对象,隐式转换 3) 函数返回对象的时候(用变量来接,&,或者&& 接收,都会少调用一次析构,防临时变量被析构掉) 总结: Func();//函数引起消耗 Test temp; 会消耗一个构造和
2021-11-18 20:54:00
320
原创 笔记_RTTI_typeid_type_info_final_静态动态_左值和右值
RTTI:(Run Time Type Identification) 运行时类型识别 通过运行时类型识别,程序能够使用基类的阵阵或者引用来检查这些指针或者引用所指对象的实际派生类型 1 dynamic_cast 能够将基类的指针或者引用安全的转换为派生类的指针或者引用 2 typeid 返回指针或者引用所指对象的实际类型; 以上方法,要求基类必须有虚函数 因为只有虚函数的存在,这两个运算符才会使用指针或者引用所绑定的对象的动态类型(new的类型) 强制转换 Human *p = new Men; ..
2021-11-17 18:41:17
546
原创 笔记_内联_类_mutable_静态成员变量_纯虚函数
内联: 一些简单的函数调用时间可能只用几毫秒,但是压栈出栈时间远比函数调用时间长,为了节约时间 1系统尝试将调动该函数动作替换为函数本体,以提升性能。 函数定义前增加了关键字inline 2只是开发者对编译器的一个建议,编译器做不做取决于编译器的诊断功能 3内联函数定义要放头文件。这样用这个内联函数的文件都能通过#include吧这个源代码放进来。 1内联函数尽量要小 const int &d = 100; 函数中带const可以防止传参被修改,只是引用 void func(const int
2021-11-16 22:51:51
370
原创 笔记_UE4单播,多播代理 服务器UDP TCP 函数指针
本周学习内容回顾 UE4单播,多播代理 服务器UDP TCP 函数指针 其他零散知识点 UE4单播: 第一个传自身引用,第二个FName,函数名字 绑定Lambda 动态有参单播 动态多播: 自己手写一个单播多播 ...
2021-11-15 10:05:20
719
原创 UE4 3DUI始终显示在摄像机最前方
最近接到一个需求,需要使3DUI不被其他物体遮挡,始终显示在最前方。网上各种找,参考了 董国政大神写关于用DisableDepthTest来实现透视效果的技术文章: https://blog.youkuaiyun.com/qq_36409711/article/details/76691192 其实实现方法很简单 1:找到3DUI的UI 2:找到UI位置并且复制一份出来,并打开做如下设置 3:把改好的UI放到3DUI下,效果如下 ...
2021-08-17 15:21:44
2768
原创 UE4 VR WidgetInteraction 局域网设定
无论用什么,我们要先确定是什么------------------------鲁迅 下面是关于WidgetInteraction的官方定义 控件交互组件执行光线投射,确定它是否命中世界场景中的控件组件。如命中,可设置规则确定与其交互的方式。 交互通过模拟定义的按键来执行。例如一个按钮可通过鼠标左键点击,即可告知其他形式的输入模拟一次鼠标左键点击(控制器按钮按下、运动控制器扳机键按下等)。 总的来说就是:发射射线与3DUI交互并设定交互的方式 添加方式也极其简单(官方文档讲的很详细,这里只是简略一提)
2021-07-23 11:07:03
1240
原创 Win10略缩图悬浮问题
1.WIN10鼠标悬停到任务栏的时候显示略缩图,但是移开不关闭 解决办法:直接不显示略缩图即可 方法如下: WIN+R运行regedit,进入注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 创建一个名称ExtendedUIHoverTime 的 32位DWORD值(如果有就直接修改) 修改为9000即可 ...
2021-07-22 07:52:32
1029
原创 关于UE4广域网配置过程,以及配置踩过的坑
最近想和小伙伴开发一款UE4的小游戏,思来想去还是决定做多人联机功能,以下,是配置网络时踩过的坑 鉴于教大家配置的文章很多,这里就buzu
2021-06-13 13:23:25
1304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅