首页
社区
课程
招聘
[原创]unreal engine逆向学习之反射设计(一)
发表于: 2025-8-3 16:24 3952

[原创]unreal engine逆向学习之反射设计(一)

2025-8-3 16:24
3952

需求问题1: 假如我们用C语言面向过程的写法,实现一个简单的控制台贪吃蛇游戏。我们再想做一个3D版坦克大战游戏会发现之前写的代码基本无法复用,而且我们如果想实现物理碰撞效果,还需要手搓一个物理引擎。那么我们把制作游戏需要的功能集成到一个引擎中,例如渲染引擎、物理引擎、音频引擎、人工智能系统、网络模块等能大大减少游戏开发效率和门槛。


需求问题2:

在玩家出生点生成10个怪物

如果我们想修改成创建10个MonsterB显然是十分麻烦的,要是能通过字符串的形式去new对象就好了,这样我们就能动态的创建不同种类的怪物。


反射机制:
反射机制主要是指程序可以访问、检测和修改它本身状态或行为的一种能力

在运行时动态加载类、构造对象并调用方法,允许程序在运行时获取自身信息并修改行为。其核心在于程序能够通过内置的API在运行时查询类的结构(如方法、属性等),并动态执行操作。

定义基类实现反射的基本方法,所有参与反射的类继承基类

自定义类继承基类


创建对象

这样可以实现用字符串去new一个对应的对象,但是假如我们要新建一个类或者修改一个类,那么这个FactoryCreat都要进行修改。十分不利于维护。所以我们需要换一个方式来处理。

1.工厂内部需要有个映射,也就是一个字符串对应一个类new的方法。 2.工厂给出一个接口,我们传入字符串,那么返回这个字符串对应的方法new出来的对象指针。 3.我们新建的类,如果需要支持反射机制,那么这个类需要自动将自己的new方法和名字注册到工厂的映射中。

建立一个全局哈希表来存储对象名


这样我们自定义的类只需继承object基类,就能参与到反射中,可以使用动态字符串创建对象。当然这只是一个基本概念与真正商业上反射设计还差很远。


[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 101
支持
分享
最新回复 (52)
雪    币: 0
活跃值: (256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666666666666
2025-8-3 19:22
0
雪    币: 209
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
666666666666
2025-8-3 19:36
0
雪    币: 104
活跃值: (6838)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
666
2025-8-4 09:02
0
雪    币: 88
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5

感谢你的贡献,论坛因你而更加精彩!
2025-8-4 09:03
0
雪    币: 1849
活跃值: (1970)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习一下
2025-8-4 10:37
0
雪    币: 1110
活跃值: (2554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习一下
2025-8-4 10:59
0
雪    币: 605
活跃值: (1010)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
6666666666
2025-8-4 22:33
0
雪    币: 9626
活跃值: (5337)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
6666666666
2025-8-5 18:17
0
雪    币: 80
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
感谢分享
2025-8-6 11:35
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
;让他永远一如
2025-8-6 13:43
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
1111
2025-8-8 18:48
0
雪    币: 201
活跃值: (266)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习一下感谢分享
2025-8-11 11:48
0
雪    币: 225
活跃值: (542)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
99
2025-8-11 11:51
0
雪    币: 2646
活跃值: (6108)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
66666666666666666666
2025-8-12 17:01
0
雪    币: 2472
活跃值: (7025)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢分享
2025-8-14 08:28
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
感谢分享
2025-8-16 16:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
学习一下
2025-8-18 21:55
0
雪    币: 26
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
11
2025-8-20 15:03
0
雪    币: 9
活跃值: (360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
感谢分享
2025-8-20 16:26
0
雪    币: 726
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
1
2025-8-20 20:09
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
1
2025-8-23 03:35
0
雪    币: 210
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
2025-8-23 14:40
0
雪    币: 292
活跃值: (1332)
能力值: ( LV3,RANK:29 )
在线值:
发帖
回帖
粉丝
24
1
2025-8-24 16:04
0
雪    币: 477
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
谢谢你的细致分析,受益匪浅!
2025-8-24 22:41
0
游客
登录 | 注册 方可回帖
返回