Unity3d 面向对象设计思想(3)(对象的拆分)

Unity3d 面向对象设计思想(三)(对象的拆分)

最近看了一个Unity3d官网的Native 2d的一个Demo,发现Unity3d是一个纯面向对象的游戏引擎,

面向对象的程度,让我惊叹。

正常的,对象之间完全是独立工作,比如一个普通的ARPG游戏,一个人物拥有武器,可以攻击怪物,

我们可以把攻击动作封装到人物当中,这样人物拥有攻击属性,可以攻击到敌人。

但,在纯面向对象的封装的语言,这是不可以的,这样会使程序复杂起来,细想想,人物跟攻击根本

没什么关系,所以攻击跟人物是没有关系的,攻击动作不会是绑定到人物角色本身,而与

攻击本身相关的是武器,攻击的动作应该是武器发出来的。这样来分析,符合面向对象的思想;

 

再说如果游戏都有音乐,如果是攻击音效,可以在攻击时播放,人物受到伤害会音效会在人物受到伤害时播放,

如果是游戏的主声音呢,背景音乐呢,我们都可以帮定到主Camera上,再在Camera逻辑判断再播放,

这样完全是可以的。但,Unity3d不会提议这么做,在Unity3d中,所有游戏元素都是对象,音乐也是,

我们可以把主背景音乐封装成一个对象,这样方便管理。

 

还有车子在路上跑,这里牵涉到司机,我们可以简单封装成:

车子本身的行为:前进,后退,刹车,加速,停车

车子本身的特征:高档车,中档车,低档车

车子的特征或速度表现:发动机引擎

司机对象应该说跟车子本身的行为的一致,当然司机有自己的简单行为,嘲笑,技术

具体的移动行为表现:轮胎

在一个合格的面向对象的封装中,车子的速度应该体现是发动机引擎与司机的技术,个人觉得如果对象封装,

得封装一个移动引擎,用于驱动车子的速度。

 

其实面向对象与现实是分不开的,所有现实生活中的物体都是对象,比方说我在写博客:

简单的说是人物与电脑,输入的内容的行为表现应该是键盘,内容的表现形式是电脑屏幕

人物的行为是一种虚构,思想

 

:)