(转载)虚幻引擎3--UE3之UClass

UE3并不是真的支持反射, UE3支持的仅仅是通过宏来生成的运行时类型检测. 

  在UE3中, UObject是UE3中最底层的基类, 所有要与脚本交互的类, 以及需要序列化的类都要继承它而来. UClass也是UObject的子类. UObject的功能包括 : 对象的实例化, 对象的序列化以及反序列化, 脚本的解析与执行, 垃圾回收.

  UE3中C++代码与Unreal Script代码共存, 对于所有的Unreal Script都有对应的UClass与之对应. 脚本是通过对UClass中的字节码进行解释并挨个调用对应C++的代码来执行的. 在UObject中所有exec打头的函数都是用于与脚本交互的, 其功能包括脚本字节码的语法解释和操作(if, +, -等), 脚本内置函数等. UObject本身作为Unreal Scipt的Virtual Machine来解释执行UC脚本字节码.

在UE3中UClass有两层含义, 

1. 对应Unreal Script中的类型, 所有UC脚本都会有对应的UClass对象, 这个UClass包含了此类型的信息, 如函数, 变量, 状态等信息, 以及UC最终编译后的字节码.这个对象作为Static Class被所有实例化(Native Class)的对象所共享. 在构造具体类型Class的实例化对象时, 类型通过XXX::StaticClass来获取.
2. 用于运行时类型检测, 代表实例对象的类型, 这项功能可用于脚本导出类以及C++端类共同使用. 

关于Unreal Script的实现以及执行过程详细文档可参阅

https://udn.epicgames.com/Three/UnrealScriptImplementation
https://udn.epicgames.com/Three/UnrealScriptCompileProcess
https://udn.epicgames.com/Three/UnrealScriptExecution
https://udn.epicgames.com/Three/UnrealScriptByteCode

 

原文地址:http://www.cnblogs.com/flycodes/archive/2012/10/15/2724536.html

posted @ 2016-12-12 11:04  星月相随  阅读(934)  评论(0)    收藏  举报