## 字节码模式 Bytecode 字节码模式,将行为编码为虚拟机器上的指令,来赋予其数据的灵活性。从而让数据易于修改,易于加载,并与其他可执行部分相隔离。 ### ### 要点 - 字节码模式:指令集定义了可执行的底层操作。 一系列的指令被编码为字节序列。虚拟机使用中间值堆栈 依次执行这些指令。通过组合指令,可以定义复杂的高层行为。 - 可以理解为项目中的转表工具,将excel中的数据转为二进制数据,并读取到工程中,如在项目中使用google protobuf或json。 - 字节码类似GOF的解释器模式,这两种方式都能让我们将数据与行为相组合。其实很多时候都是两者一起使用。用来构造字节码的工具会有内部的对象树,而为了编译到字节码,我们需要递归回溯整棵树,就像用解释器模式去解释它一样。唯一的不同在于,并不是立即执行一段行为,而是生成整个字节码再执行。 ### ### 使用场合 这是GPP一书中最复杂的模式,不能轻易的加入到游戏中。 当我们需要定义很多行为,而游戏实现语言因为以下原因不能很好地完成任务时,就可以使用字节码模式: - 这些行为过于底层,繁琐易错。 - 这些行为遍历起来很缓慢,导致编译时间长。 - 这些行为太受依赖。如果想保证行为不会破坏游戏,你需要将其与代码的其他部分隔开。 如果是上述的这些情况,就比较适合使用字节码模式。 但需要注意,字节码比本地代码慢,所以最好不要用于引擎对性能敏感的部分。 ### ### 引申与参考 - Lua的内部实现就是一个非常紧凑的,基于寄存器的字节码虚拟机。 - Kismet是个可视化脚本编辑工具,应用于Unreal引擎的编辑器UnrealEd。() - 本节内容相关的英文原文: - 本节内容相关的中文翻译: