Skip to content

关于Unity3D如何写游戏逻辑部分的思考

关于Unity3D如何写游戏逻辑部分的思考 published on 关于Unity3D如何写游戏逻辑部分的思考有97条评论

最近准备开始做一个手机网络棋牌游戏的Prototype,就在构思如何如何写游戏逻辑部分。在游戏开发过程中,Prototype版需要展示某个游戏核心玩法,它可以没有华丽的界面,没有游戏内各种元素的完美呈现,甚至可以没有声音,但它必须有“核心玩法”的体验。简单来说“核心玩法”就是在一个游戏里玩家用大量的时间来使用的某一种“系统”,没有了这个“系统”这个游戏就没有存在的意义。

在棋牌游戏中,最核心的就是“下棋”或“打牌”这个个过程,这个过程中所有玩家会触摸、点击、双击、拖放游戏中的一些元素,来推动游戏过程的进行,游戏完成后应该有一个对于胜负情况的统计和展示,然后当所有玩家准备好之后就开始下一次游戏。我们将这个系统称为“博弈”系统或者叫“对战”系统,其中它有一个重要子系统叫做“结算”子系统。这就是一款棋牌游戏的核心系统,使用它的过程就叫这个游戏的“核心玩法”。游戏Prototype版本的制作都是为围绕着这个核心玩法开展的。

上面好像扯远了,说回正题“逻辑”。写这篇博文也是为了整理一下思绪。基于Unity3D的客户端开发,逻辑代码要比较明确的分为两部分来做,不能混在一起,否则项目越到后期越难驾驭,第一部分是“控制”逻辑,第二部分是“呈现”逻辑。

为甚么说要“明确分为两部分”呢?我认为派生于MonoBehaviour的类,也就是我们在Unity3D中挂接在GameObject对象上的这种代码,我将其称为“逻辑呈现”程序,顾名思义这种类只可用来控制可显示对象的逻辑呈现过程,诸如:位置变换、动画、显示、声音等的控制。而另外一些对象都应该用继承于MonoBehaviour的类来实现,这种代码我将其称之为“逻辑控制”程序。它负责管理逻辑对象中的数据以及各种逻辑对象之前的关系。这样说吧,它负责“指导”逻辑呈现程序的工作,为逻辑呈现、图形显示等提供依据,但具体的呈现控制不是由它来做。

接下来看图说话:

 

 

 

Unity3D-uml1

 

基于以上思路我会将整个游戏逻辑控制根据需要编写多个类,并且由一个叫LogicMgr的单件类来管理。通过LogicMgr来管理所有的逻辑控制类,这个单件类中会提供一个名为update()的方法,在逻辑呈现程序的每帧中调用,以便更新所有的逻辑控制类的数据。LogicMgr类实例会在游戏的第一个level创建时由一个被挂接了专用逻辑呈现程序的GameObject来创建,假设这个逻辑呈现类叫LogicView,它是派生于MonoBehaviour的,在LogicView类中实现Awake()方法,并且将挂接LogicView程序的GameObject设置为“不会销毁”,同时在这个方法中的来初始化LogicMgr的实例,在这个逻辑呈现程序中的Update()方法中来调用这个单件的update()。

原创文章,转载请注明: 转载自游戏无界·达秀的黑暗空间

本文链接地址: 关于Unity3D如何写游戏逻辑部分的思考

本站作品除特殊申明外均为原创,采用知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。如果需转载请保持文章完整性和标明原文出处,禁止商业用途。

您对下面的文章也感兴趣吧:

  1. Pingback: Theodore

  2. Pingback: Zachary

  3. Pingback: Gene

  4. Pingback: Everett

  5. Pingback: norman

  6. Pingback: Maurice

  7. Pingback: Greg