- 博客(988)
- 资源 (2)
- 收藏
- 关注

原创 UE4 & C++ 笔记
创建名为Name的USceneComponent组件对象USceneComponent* P = CreateDefaultSubobject<USceneComponent>(TEXT("Name"));开启TickPrimaryActorTick.bCanEverTick = true;资源查找器static ConstructorHelpers::FObjectFinder<资源类别> CubeVisualAsset(TEXT("资源路径"));if..
2021-02-25 18:53:29
7189
1

原创 ACM中的数学问题合集
数学在ACM竞赛中通常会占很大的比重,例如这次暑假的多校比赛中,几乎所有题目都和数学有着很大的联系所以统计一下一些常用的知识点数论欧拉定理威尔逊定理中国剩余定理费马小定理...
2019-08-20 22:30:35
12070
3
原创 Unreal DataAsset 自动收集项目资源
问题:有很多资源,然后需要配置一张表去包含这些资源,然后用 GameplayTag 去找资源。然后就是每次增加资源都需要维护这个表比较麻烦,所以弄了个自动化收集。
2024-11-21 00:14:16
314
原创 高版本 VisualStudio 编译低版本源码版 Unreal
编译报错找不到 .NETFramework,Version=v4.5 的引用程序集:确保安装 .NETFramework 4.5 版本的开发者包(找不到、或是还是不行的可以看下这个。可以编辑 GenearteProjectFiles.bat 内容查看报错,例如。就需要安装 Win SDK 8.1。
2024-10-21 14:57:58
348
原创 Win11 体验优化(个人习惯)
中英输入法切换改为Ctrl,关闭繁体(右下角输入法右键 - 按键配置)软件安装(请在完成路径更改后安装软件,避免自动配置的路径出现问题)Win+E,界面上三个点的按钮 - 选项。Win+V,打开历史剪贴板。
2024-10-18 19:56:46
543
原创 Unreal 对象、属性同步流程
Object指针在服务器往客户端传递的时候,会生成一个NetGUID,存在UNetConnection::PackageMap(UPackageMapClient)::GuidCache内的Map内。上面有提到,如果传递下来的指针,要么GUID在本地找到对象,要么是Static的对象可以本地加载,另外一种情况就是,当前指针对应的UObject还没有在本地创建。接下来就讲一下这种情况。处理单个Object:Object同步一共是三部分,第一是Object本身(Load),第二是变化的属性,第三是指针的处理。
2024-09-30 17:30:30
1299
原创 Unreal 智能指针原理分析
TSharedPtr,有两个成员,占用 16 个字节,分别是对象指针和引用控制器。控制器内有两个计数器 Shared 和 Weak。TWeakPtr 内的是 FWeakReferencer,其内部也是 TReferenceControllerWithDeleter,之所以有区分,可以看下小节TSharedRef 内部和 TSharedPtr 基本一致,没有提供空构造函数,而且在赋值和构造函数内,都会用 check 保证指针非空。
2024-05-26 17:18:41
576
原创 Unreal 编辑器工具 批量重命名资源
右键 - Editor Utilities - Editor Utility Blueprint,基类选择 Asset Action Utility。然后编译后,就可以在选中资源后右键的菜单内看到 Scripted Asset Actions 内,会有你刚刚创建的函数。然后新建一个函数,加上4个输入:ReplaceFrom,ReplaceTo,AddPrefix,AddSuffix。在类默认值内,可以添加筛选器,筛选指定的类型。
2024-05-02 16:23:21
1479
原创 关于 Unreal 的各种坐标系、输入与逻辑的转换问题
对于旋转,Roll(X)的正方向为(右上左),Pitch(Y)的正方向为(后上前),Yaw(Z)的正方向为(左前右)你会发现 X 轴 Y 轴变来变去,正的方向也变来变去,这到底是怎么回事?在世界原点往 X 轴方向看去,ForwardVector 为。手柄摇杆、鼠标移动朝右得到的。屏幕上,向右移动的输入为。,此时的右手边的方向为。
2024-03-31 15:34:48
1655
原创 Stable Diffusion启动时gradio报错导致WebUI交互按钮报错(Textbox.update() got an unexpected keyword argument ‘info’)
【代码】Stable Diffusion启动时gradio报错导致WebUI交互按钮报错。
2024-03-30 15:39:26
532
原创 Unreal:蓝图内继承C++接口,C++Cast接口指针返回nullptr问题
比较简单的解决办法是在C++内部去创建一个类继承这个接口,但是既然在蓝图内继承了,可能是基类已经确定且无法在基类内部继承。如题,在C++内定义接口,然后蓝图内继承该接口。,返回的确实nullptr。来访问蓝图实现的函数。
2024-03-28 11:44:13
413
原创 Unreal 中的四元数 FQuat
四元数:Quaternion,四维数域内的数,可用于描述点在三维空间内的旋转(因为三维的旋转可以理解为绕某个轴旋转一个角度,所以需要4个维度的信息),也就是单纯的旋转信息,不包含位移信息(绕着不通过原点的线,可以先把点和轴平移,再旋转,再把点平移回去),同时表示一个三维空间的旋转,那么自乘的结果内,有一项为。,同时加上以下设定:(不满足交换律)注意这里的旋转的轴,指的是从原点到。这样子,我们就可以让乘法的结果也是。,参考二元数的共轭值定义,时,可以推出各个系数为(表示二维坐标系内的向量。
2024-03-24 17:16:26
1182
原创 Obsidian Win+Android Onedrive/Git 同步
此仓库安装Remotely Save插件,远程服务选择为OneDrive,然后授权。替换清华源:https://mirrors.tuna.tsinghua.edu.cn/help/fdroid/管理SSH,生成一个SSH,然后点击生成的SSH,把ssh-rsa开头的公钥复制,到Github上添加SSH。知道有修改的时候,在MGit内Pull;新建一个相同名字的仓库,然后也安装Remotely Save插件,同上设置好后就会同步了。然后克隆仓库,url为github下,SSH对应的链接,例如。
2024-02-19 17:04:44
1677
原创 Unreal FFastArray 实现原理
对于 FFastArraySerializer,ArrayReplicationKey 用于判定整个数组内是否存在变化(ConditionalCreateNewDeltaState内判断)对于 FFastArraySerializerItem,ReplicationID 为该Item的标识,ReplicationKey 用于判定是否有修改。
2024-01-03 14:18:39
1617
2
原创 Unreal 断线重连、AI控制
在AGameModeBase::PostLogin内,完成PS初始化后,调用HandleStartingNewPlayer,开始匹配、创建角色。当服务器判断某个玩家掉线的时候,会删除对应的PlayerController。
2023-11-02 15:00:34
884
原创 Unreal 序列化版本控制
若之前没有添加版本信息,则读取版本为:BeforeCustomVersionWasAdded也就是0。之后序列化Save的时候,都是保存的当前的LatestVersion值,也就是最新的版本值。所以下次更新版本,版本数++后,读取的旧的LatestVersion值就自然变化了。Unreal支持在序列化的时候,获取旧的文件所在的版本号,和新的版本号。可以拿这两个版本号,进行序列化定制。一个就行:只需要和其它版本GUID不一样就好,从概率上来说几乎是不可能重复的。
2023-09-20 10:39:39
719
原创 unreal 同步UObject
UObject分为两种同步形式:自己维护要同步的registration list、同步时通过函数ReplicateSubobjects自动获取,通过。其实UActorComponent的同步就是走的这个,参考 AActor::ReplicateSubobjects。重写 ReplicateSubobjects,手动对 Subobject 进行同步。需要借助同步的Actor或者Component来进行同步,一般是谁创建,谁同步。以UGameplayTasksComponent为例。移除是也需要手动移除。
2023-09-04 17:45:37
1006
原创 Unreal View Model结合GAS使用
这个东西真的难用,各种问题,记录下官方文档:https://docs.unrealengine.com/5.2/zh-CN/umg-viewmodel/
2023-08-12 23:50:24
739
原创 Unreal DataTable使用
float XXX;类的元数据加上 BlueprintType继承 FTableRowBase需要编辑的参数加上 UPROPERTY 标签参数的元数据加上EditAnywhere, BlueprintReadWriteCategory 不能多层,例如 “A|B”
2023-08-11 14:30:49
497
原创 Unreal Struct序列化、复制、比较、导出、类型转换、垃圾回收
定义NetSerialize和TStructOpsTypeTraits。
2023-07-03 18:08:19
2189
原创 unreal UObject序列化
会和CDO进行比较,将不同的属性序列化进去,依据FPropertyTag解决结构不完整的问题先复制一份CDO,然后将序列化的属性设置到Object内if(!
2023-04-28 10:35:52
1166
原创 unreal 关于贴图在缩小后的清晰度
Texture Group 默认 World就好,Mip Gen Settings 改为 TMGS_FromTextureGroup,Filter 改为 TF_Trilinear。Anti-Aliasing Method 用默认的 AAM_TemporalAA 就好。噪点:在no mip的情况下,直接缩小会产生严重的锯齿,然后抗锯齿算法计算导致不稳定。
2023-04-19 00:17:41
396
原创 UnrealEditor-RHI.dll 没有被指定在windows上运行
去 Engine\Binaries\Win64 目录下,删除 UnrealEditor-RHI.dll,重新编译即可。
2023-03-29 16:35:18
1066
原创 Unreal AI 感知模块解析
一般是直接调用AActor::MakeNoise进行发声,调用流程大致是:在UAIPerceptionSystem的Tick内,调用每种已注册的UAISense的Tick,进行Update,这个是所有AISense感知的主要函数在UAISense_Hearing::Update内,对于每个Listener(FPerceptionListener,包含感知组件、队伍ID等数据),分别对每个FAINoiseEvent进行处理,是否能被听到是依据:这里还用了一个延时处理(PerseptionSys->Regist
2023-01-06 11:32:47
1662
原创 Unreal 读写自定义配置文件
上面的方式,要么需要手动写配置文件,要么需要主动调用SaveConfig,比较不直观。在开发过程中的一些参数,想要方便的调整,可以创建一个类继承自UDeveloperSettings。在修改项目设置的时候,会生成 / 保存到对应的ini文件,当UCLASS存在defaultconfig时,ini文件将会生成到。首先需要自定义一个继承自UObject的类,UCLASS加上config标志。将想要和配置文件交互的属性,UFUNCTION加上Config标志。需要在过程中恢复设置内的配置,需要手动加载。
2022-12-27 15:56:54
3392
原创 UE AIPerception感知非Pawn对象
AI之所以只感知Pawn,是因为被感知的对象需要手动注册,而非全局搜索。在BeginPlay阶段,为所有的AISense,调用RegisterAllPawnsAsSourcesForSense并且之后再通过RegisterSenseClass新注册的AISense,也会调用RegisterAllPawnsAsSourcesForSenseRegisterAllPawnsAsSourcesForSense则是检索所有的Pawn进行注册处理新生成的Pawn在UAISystem::PostInitProp
2022-12-05 15:39:03
712
原创 在UE内添加控制台工程(Programs)
在下新建文件夹 XmlToProto内部新建文件夹Source,以及5个文件,文件内容见最下方cmd 运行UBT会刷新.sln项目文件,之后重新打开VS就可以看到该工程了可以像正常项目一样引用模块、插件(PublicDependencyModuleNames)把主流程写到 XmlToProtoMainWindows.cpp 内的main函数内即可(RequestEngineExit之前,且这个函数不能跳过)XmlToProto.Build.csXmlToProto.Target.cs
2022-06-22 15:39:12
775
原创 UE 添加模块的全局宏
在XXX.build.cs内,添加PublicDefinitions.Add("MacroName=MacroBody");即可。这个是基于文本的填充,所以可以写各种花里胡哨的 MacroBody,例如:PublicDefinitions.Add("MACRONAME_AAA(x)=for(int32 i=0;i<x;++i)");在 Build 后,在 Intermediate\Build 内会生成 Definitions.ModuleName.h 的文件,内部就包含了这样一句宏#defi
2022-05-20 11:25:38
1396
原创 C 宏与注释
宏内部无法使用 // 进行注释,这样末尾无法使用反斜杠进行换行#define AAA axax\/*注释*/ \ax /* 多 行 注 释 */ \axax
2022-05-06 16:51:48
564
原创 正则表达式
学习测试替换:在匹配的表达式内,使用()截取部分字符,在替换表达式内,使用$N代表第N个截取内容。例如想要匹配#include <GameCore/XXX.h>#include<GameCore/XXX.cpp>那么匹配表达式就是:// \s* :任意个空白字符// .* :任意个任意字符#include\s*<(.*)>我们都知道<>用于引用系统文件,想要改为"",并且统一一下格式,那么替换的表达式就是:#include "$1
2022-04-15 17:04:29
205
原创 UE5 StateTree
文章目录After all状态转移数据配置方式After allStateTree就是分层状态机,稍稍结合一点Sequence目前比较简陋,提供的节点就几个,大部分都要自己写,例如PlayMontage、Wait、MoveTo、EQS等模型比较像行为树加一个Goto,EnterCondition=Decorator,Upper Task=Service,State=CompositeNode状态转移子状态激活时,上级状态也处于激活状态。此时如果满足上级状态的转移条件,会发生转移怎么转移进入
2022-04-10 18:56:55
4346
原创 Unreal - Environment Query System(EQS)
文章目录什么是EQS形成测试点评分标准化什么是EQS在指定区域内形成测试点根据环境(战场情况)对每个测试点做出评分,最后选出一个评分最高的点结果:提供下一次Do Something的较佳目标点,例如AI的移动形成测试点以环形为例评分当DistanceTo存在多个时(EQContent),每个各自算出评分,最后通过Multiply Content Score Op算出最后的分数标准化参考函数:void UEnvQueryTest::NormalizeItemScores(
2022-04-01 15:29:18
879
原创 关闭 切换Caplock时出现在屏幕的提示图案
右键 - 显示设置 - 高级显示设置 - 显示适配器属性 - 屏幕配置 - 启用屏幕显示 取消勾选
2022-03-21 15:45:11
5986
2
mnist手写数字数字集
2019-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人