UE3之UClass

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

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

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

UE3UClass有两层含义

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

posted @ 2012-10-15 16:54  Flyingpig  阅读(776)  评论(1编辑  收藏  举报