Torque引擎系列之核心类(ConsoleObject)

TGE引擎中,ConsoleObject类是所有核心类的基类,所有在脚本中用到的类都必须继承于该类。该类主要提供脚本动态创建对象、类属性脚本初始化等功能。在前面的脚本入门介绍中,我们知道在TGE脚本中通过“new”关键字来创建动态对象,并进行初始化。那么在ConsoleObject class中是如何实现这一点的呢?

当脚本想要创建一个对象时会把一个类名字符串传递到引擎中,比如当脚本中调用 new Player{}时,类名就是“Player”字符串。于是问题就在于怎么通过这个类名字符串new出该类的一个对象。我们很自然的会想到必须建立一个类名和类的关联表,创建的时候通过类名映射到类,进行创建。TGE引擎的思想基本也是如此,但是在实现上做的很有技巧。
TGE中使用了代理模式,当我们定义一个脚本类(在脚本中能够访问的类)时,需要加入一个宏:IMPLEMENT_CONOBJECT(className),可不要小看这个宏。通过它,引擎会生成一个代理类,并把这个代理类注册到一个链表中。ConcreteClassRep代理类是一个类模板,模板参数就是实体类的类名。于是,当我们需要创建对象时,只需要通过类名在链表中查到给类名对应的代理类,然后通过该代理类利用模板机制就可以进行创建了。
我们在脚本中创建游戏对象的同时,必须给对象进行初始化。引擎通过initPersistFields()函数给脚本公布类属性接口consoleObject的每个子类都必须重写该方法。另外我们还可以通过consoleInit()函数给脚本公布全局变量接口。给脚本公布类函数使用:ConsoleMethod(className,name,returnType,minArgs,maxArgs,usage1) 宏。公布全局函数使用:ConsoleFunction(name,returnType,minArgs,maxArgs,usage1) 宏。
总结:在TGE中,任何你需要在脚本中用到的类都必须继承鱼ConsoleObject类,它实现了引擎和脚本的接口。后面,我会继续分析它的重要子类。(未完待续)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值