mvc模式编写代码 mvc结构?
mvc结构?
mvc的全称是模型视图控制器。在MVC中,m代表模式,v代表视图,c代表控制器。
MVC是一种类似于三层的架构,主要采用封装(分层)的思想来降低耦合度,从而使我们的系统更加灵活和可扩展。
1.模型是应用程序的主要部分,主要包括业务逻辑模块和数据模块。模型独立于数据格式,因此一个模型可以为多个视图提供数据。因为应用于模型的代码只需编写一次就可以被多个视图重用,所以减少了代码重复。
2.视图:用户交互的界面。在w
mvc代码是什么?
MVC代码是软件工程中的一种软件搁置模式。
如何在Unity中实现MVC模式?
在Unity games的开发中,我没有 t刻意采用MVC框架,因为不像网站开发,模型、视图、控制器在游戏领域还没有明确的定义。原因可能是不同游戏类型的软件架构可以有很大的不同,游戏中的对象之间有大量的交互,所以垂直MVC似乎不是很适合。
但一定程度上需要将代码逻辑分离,这样可以提高代码的可维护性和可重用性。我来说说我自己的一些经历。
假设我们在做一个马里奥:我会对游戏中的人物采用这样的结构。角色管理器,其作用是包含该角色的控制器并提供黑板[1]。控制器,使用可重用的模型来处理这个游戏中角色的某个状态的逻辑。可重用模型是一个虚拟的概念,不是父类。通常这种模型负责一个特定的功能,可以重用,可以看作是游戏引擎的扩展。我将从角色管理器和可重用模型中继承MonoBehavior,这样我们可以直观地知道这个角色是一个什么样的角色,我们可以使用inspector来调整模型的参数。如何将上述架构应用于马里奥:作为角色管理器,我们可以使用Refine状态机或行为树.一个优点是它们都提供了一个 "控制器和很自然。比如精化状态机,它的每一个状态都可以看作一个控制器。行为树中的动作节点也可以看作是一个控制器。
在每个控制器中,都会有指向一些可重用模型的指针。比如下图,Move State可以有一个Move Motor,专门用于GameObject的移动,而Sprite封装了GameObject的性能,比如动画、旋转、位置等等。这些可重复使用的模型通常提供丰富的参数来调整,并可以在不同的游戏中使用。
游戏中的用户输入和消息会临时存储在角色管理器中的黑板上,供角色管理器决定是否需要更换控制器。比如在Mario中,我按下左键,向左移动的信息就会被写入FSM的黑板,然后我通过FSM s状态转换机制[2]。这样做的好处是,左边的信息可以从输入管理器(图中未显示)或敌方AI管理器(图中未显示)获得。这样,一种类型的FSM(如Idle、Move、Jump等。)可以用在所有类似的角色上,不管是玩家控制的还是AI控制的。
最终在团结会是这样的局面。FSM、Sprite和MoveMotor都是组件,控制器包含在FSM中。虽然上述方案并不严格,但在一定程度上提高了代码的可重用性和可维护性。比如现在我基本都是写MoveMotor,Sprite之类的模型,新项目扔进去就可以用了。将平台游戏中常用的MoveState、IdleState、JumpState等状态进行封装,留下一些可调整的参数,比如状态之间的转换。
[1]黑板本质上是一本字典。[2]原来的FSM会把状态转换直接放在状态中,但这大大降低了状态的可重用性。所以可以尝试用状态的变换作为可调参数。一些可视化FSM的原理是一样的,通过连线把两个状态联系起来,然后定义一些变换。条件。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。