在这里是根据我个人做游戏过程中总结的观点(仍然着重声明,如果有人不同意,可以认为这是我写给自己看的)
在游戏中我们常常会遇到一个主要的问题,谁在修改谁,谁调用谁,当两个物体A和B发生交互从而触发功能function01,那么功能function01应该写在A中还是应该写B中,function01是由A来调用还是B来调用呢。
针对上面的问题,也许哪位大牛看了会马上提出各种设计模式,我也想过这个问题,但是无论看了多少遍设计模式,我还是不会,因为无论这些设计模式如何好,我仍然发现似乎这对于游戏似乎过于复杂了,游戏不像普通的应用程序编程,游戏中过多的继承,模式的约束反倒使得游戏编程变得过于复杂。经过大量的尝试之后我又回到unity引擎(你以为我在说什么,我一直围绕unity引擎讨论的)最初原旨,面向组件编程。什么各种模式都滚蛋吧,我又不是做引擎的,我只是想做游戏。似乎扯远了,上面这些只是我再次提醒自己而已,下面回到正题。
为了简单起见,我们以传送玩家为例:
如果玩家A要在B的位置传送到下一个场景的C点,我们有两种方式。一,玩家A设置触发器triggerA,如果触发在B的位置,并且如果按下I键,那么进行传送;二,B设置触发器,如果玩家A进入触发区域,并且按下I键,那么进行传送。这里使用使用那种方式呢?传送功能写在A中还是B中呢?或者还有更好的办法吗,首先我们讨论两种原则(我自己定的):
一,谁主动谁被动:很明显,玩家是主动,所以玩家应该是进行传送的人,所以传送功能的调用在玩家A身上进行。
二,单一功能原则:在这里我们玩家的主要功能是跑和跳,所以传送功能及相关参数不应该写在玩家身上,我们玩家应该是觉察到自己可以传送,那么调用可以调用的传送功能,B是传送位置信息点,所以应该将传送功能方法及相关参数写在B中,当玩家进入B的区域时,调用B的传送功能进行传送
原文地址:https://www.cnblogs.com/xiaoahui/p/10312455.html