需求问题1: 假如我们用C语言面向过程的写法,实现一个简单的控制台贪吃蛇游戏。我们再想做一个3D版坦克大战游戏会发现之前写的代码基本无法复用,而且我们如果想实现物理碰撞效果,还需要手搓一个物理引擎。那么我们把制作游戏需要的功能集成到一个引擎中,例如渲染引擎、物理引擎、音频引擎、人工智能系统、网络模块等能大大减少游戏开发效率和门槛。
需求问题2:在玩家出生点生成10个怪物如果我们想修改成创建10个MonsterB显然是十分麻烦的,要是能通过字符串的形式去new对象就好了,这样我们就能动态的创建不同种类的怪物。
反射机制:
反射机制主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在运行时动态加载类、构造对象并调用方法,允许程序在运行时获取自身信息并修改行为。其核心在于程序能够通过内置的API在运行时查询类的结构(如方法、属性等),并动态执行操作。定义基类实现反射的基本方法,所有参与反射的类继承基类自定义类继承基类
创建对象这样可以实现用字符串去new一个对应的对象,但是假如我们要新建一个类或者修改一个类,那么这个FactoryCreat都要进行修改。十分不利于维护。所以我们需要换一个方式来处理。1.工厂内部需要有个映射,也就是一个字符串对应一个类new的方法。 2.工厂给出一个接口,我们传入字符串,那么返回这个字符串对应的方法new出来的对象指针。 3.我们新建的类,如果需要支持反射机制,那么这个类需要自动将自己的new方法和名字注册到工厂的映射中。建立一个全局哈希表来存储对象名
这样我们自定义的类只需继承object基类,就能参与到反射中,可以使用动态字符串创建对象。当然这只是一个基本概念与真正商业上反射设计还差很远。
回复或点赞可查看完整内容
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287862.htm
[原创]unreal engine逆向学习之反射设计(一)
173 浏览
11 回复
感谢你的贡献,论坛因你而更加精彩!
学习一下
学习一下
感谢分享
;让他永远一如
学习一下感谢分享
感谢分享
感谢分享
学习一下
感谢分享
谢谢你的细致分析,受益匪浅!