C++
文章平均质量分 75
炉间书客
行至水穷处,坐看云起时
展开
-
UE 项目导航数据生成配置
如果有必要把不影响导航的组件及Actor中Collision的CanEverAffectNavigation取消勾选,可以影响Nav Tree Memory占用。该值在开启修改导航模式的情况下开启,把模型数据导出放到异步线程里去做,目前不知道对构建导航Task造不造成影响。为了优化内存占用,该值微调可以降低整个内存占用,但是过大会造成孤立的导航数据区域丢弃,所以不宜过大。相对应的是该值越低最终生成的导航数据与物体碰撞误差越小,越大误差越大。该值可以影响AI的导航攀爬,数值调整的越大,内存占用会约低。原创 2023-02-24 18:26:23 · 1232 阅读 · 0 评论 -
UE NavigationSystem的相关实现
ARecastNavMesh memory : DetourNavMesh中的所有瓦片结构内存总和 + 激活路径分配的内存(ActivePaths)+ 支持的区域结构分配的内存(SupportedAreas)+ 查询过滤器分配的内存(QueryFilters)+ 区域映射Map分配的内存(AreaClassToIdMap)+ 导航生成器内存占用(待处理任务数据结构大小 + 生成器结构本身大小 + 运行时任务结构大小 + 瓦片构建器分配的内存总和)当区域重叠时,这是相关的,我们也希望区域成本表达区域相关性。原创 2023-02-24 18:15:19 · 1758 阅读 · 0 评论 -
UE AI Perception的Sense解析
UAISenseEvent`本身更多的是充当类似于接口的功能,最关键的函数定义是`GetSenseID`,这个函数交由继承的子类负责实现,而子类会通过`UAISense::GetSenseID(UAISense_XXX)`获取全局唯一的实例SenseID,`GetSenseID`函数最终会调用`GetDefaultObject`里的SenseID,`GetSenseID`获取到的ID可以作为获取实例的索引,在感知系统中,通过传入的`UAISenseEvent`获取ID,再遍历Sense调用指定Sense的事原创 2022-07-08 22:08:54 · 834 阅读 · 0 评论 -
UE AIModule 源码解读之写法借鉴(一)
Unreal Engine AIModule 源码写法借鉴篇原创 2022-07-06 00:52:54 · 477 阅读 · 0 评论 -
UE AI里的感知实现流程解析
UAIPerceptionComponent,UAIPerceptionSystem, UAIPerceptionStimuliSourceComponent交互逻辑原创 2022-07-04 14:04:53 · 1298 阅读 · 0 评论 -
ActionRoguelike源码中相对于个人的新用法探索
项目示例学习内容原创 2022-06-13 18:45:08 · 226 阅读 · 0 评论 -
C++ 享元模式 (FlyWeight Pattern)
//UtilTool.h//工具头文件#pragma once#include #include #include using namespace std;//UObject.h//根基类,本想多写一些东西的,奈何时间不允许#include "UtilTool.h"class UObject{public : UObject(string na原创 2017-08-30 00:11:52 · 444 阅读 · 0 评论 -
C++ 观察者模式 (Oberver Pattern)
由于是个人练习用的,而且时间仓促,没有想好后再来写,尽请见谅!//UtilTool.h#pragma once#include #include #include using namespace std;//Event.h#pragma once#include "UtilTool.h"enum EVENT_STATE{ EAWAKE =原创 2017-09-01 02:08:45 · 401 阅读 · 0 评论 -
C++ 命令行模式(Command Pattern)
头文件相关:// AActor.h//TODO 事实上,可以把AActor做成抽象类的,把具体的实现下发到子类中去,把AActor作为一个接口,个人只是为了练习,也就随便写写了class AActor{public: AActor(); ~AActor(); virtual bool Jump(); virtual bool Run();原创 2017-08-28 19:53:18 · 989 阅读 · 0 评论 -
C++ 单例模式(Singleton Pattern)
参考文章:并发指南单例的七种写法//SingletonPattern.h#pragma once#include #include #include class FSingleton {private: static FSingleton* Instance; FSingleton() {}public: static FSingleton* GetIn原创 2018-01-16 16:40:21 · 372 阅读 · 0 评论 -
C++ 原型模式(Prototype Pattern)
看原理远没有实际应用中的模式令人恍然大悟。//PrototypePattern.h#pragma once#include using namespace std;class Root{public: virtual Root* Clone() = 0; virtual void Print() = 0;};class Tree :public Root{public原创 2018-01-23 10:56:09 · 487 阅读 · 0 评论 -
C++ 工厂模式(Factory Pattern)
//FactoryPattern.h#pragma once#include //base one factory pattern.enum PRODUCT { ONE, TWO, THREE, FOUR };class SimpleAbstractProduct{public: virtual void Print() = 0;};class SimpleOneAbstr原创 2018-01-22 16:10:08 · 411 阅读 · 0 评论 -
UE4 读取Non-asset型的资源
一,非资源型文件的打包拷贝: 非常重要的一环是非资源型的文件默认是不被打包拷贝的,如果你需要把这些文件随同包体一同打包,就需要额外的配置,关于这种配置的博客也有前人说过了,这里在赘述一下: 你可以通过Project Settings->Packaging找到相关配置选项。 Additional Asset Directories to Cook :这类适用于资源原创 2017-12-27 15:48:53 · 2344 阅读 · 0 评论 -
const关键字核心相关知识及decltype类型指示符
1,如果利用一个变量去初始化另一个变量,它们是不是const都无关紧要2,默认状态下,const对象仅在文件内有效,如果想在多个文件之间共享const对象必须在变量的定义之前添加extern关键字,例如: // file.cpp extern const int ibufSize = 3;//定义并初始化了一个常量,该常量能被其他文件访问原创 2016-03-25 10:10:11 · 687 阅读 · 0 评论 -
string及vector核心相关知识
String定义及初始化: string a="hello world!";//拷贝初始化 string b("hello world!");//直接初始化 string c(10,'c');//直接初始化,c的内容是ccccccccccstring 操作: getline(is,s);//从is中读取一行赋给s,返回is s.原创 2016-03-25 11:51:06 · 394 阅读 · 0 评论 -
OpenGL框架封装--基于NeHe框架
本框架是基于Nehe的OpenGL框架封装而来的,伴随的有win32的类封装原创 2016-04-18 19:34:34 · 625 阅读 · 0 评论 -
DX开发框架封装及Win32框架封装(个人练习版)
关于DX的简单封装原创 2016-04-18 19:41:46 · 576 阅读 · 0 评论 -
创建一个项目
这篇文章讨论了怎样通过命令行或者一些流行的集成开发工具创建并且编译C++项目编译器和开发库 在windows系统下,你可以使用VS2008,2010,或者 2012中的Visual C++编译器来编译代码,在 OS X和Linux 系统下,你可以使用gcc 或者 clang编译器编译代码 在windows系统下,Leap Motion通过动态链接库Leap.dll提供C++ API。并且分为32翻译 2017-06-30 16:09:56 · 504 阅读 · 0 评论 -
用C++写Leap Motion程序相关配置注意问题(VS2017)
写在前面:用该贴实例的请先配置Leap Motion SDK的系统环境变量($LEAP_SDK,你的Leap Motion SDK 所在目录,该步骤不是必须的,Leap Motion 官方也是这样的说法,不过确实能够 简便你以后的项目配置)。 1,首先检查你的项目配置,确保和以后的链接文件路径匹配(黄色部分): 因为我个人只使用了Debug x64 进行测试,所以只按该平台进行了配置,原创 2017-07-03 11:45:06 · 1910 阅读 · 0 评论 -
UE4 用FFastXml解析Xml
解析文件的引用:FFastXml存在于Runtime/XmlParser/Public/FastXml.h头文件中API Document中关于FFastXml的用法说的还是很清楚的,因此,本篇之简要说明一下基本使用规则:首先,你必须实现IFastXmlCallback接口,事实上,你的主要操作就在这个接口提供的5个接口函数中。基于此,继承IFastXmlCallback接口原创 2017-12-21 11:13:02 · 1106 阅读 · 2 评论 -
UE4 C++编程常用知识点总结
1,给角色添加组件: UCameraComponent* Camera = CreateDefaultSubobjectUCameraComponent>(TEXT("Camera0"));2,字符串组合(蓝图中组合字符串): BuildString, string +int/float/Object/vector2/boolean……+ string3.将属性公开到原创 2017-12-07 10:46:27 · 6338 阅读 · 1 评论 -
C++ 代理模式(Proxy Pattern)
随意写的,主要用作代码练习,防止代码生疏,敬请见谅!本意是能够写成一个多用途的代理模式,结果还是写废了,其他方面来说,没有时间重整它,有的写法是没有太大意义的。期望有点价值吧首先放一个代理模式的讲解,个人觉得写得不错,如果你是寻求代理模式的用法用途的话,值得一看:代理模式原理及实例讲解//ProxyPattern.h#pragma once#include #inc原创 2018-01-11 11:35:39 · 1125 阅读 · 0 评论 -
类型别名定义及auto类型说明符
两种别名定义方式: typedef 定义方式:typedef double money; using 定义方式:using money=double;(C++ 11特性)auto 类型说明符(C++ 11特性): auto让编译器通过初始值来推算变量的类型,auto 定义的变量必须有初始值: auto item=val1+val2;//item原创 2016-03-25 10:39:30 · 398 阅读 · 0 评论