用户登录
用户注册

分享至

mvc unity

  • 作者: 嗫?暁雲?
  • 来源: 51数据库
  • 2020-10-04
在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。
  究其原因,可能是由于不同游戏类型本身的软件架构可以相差很远,而且游戏里面的Object之间有大量的交互,所以垂直的MVC似乎不是十分应景。

  然而,某种程度的分离代码逻辑是必要的,可以提高代码的可维护性和重用性。
  下面我说说自己的一些经验。

  假设我们在做一个马里奥:
  对于游戏里的角色,我会采用这样一个结构。
  Character Manager,它的作用是包含这个角色的Controller(s),并提供一个黑板(Blackboard)[1]。
  Controller,利用Reusable Models来处理角色在这个游戏中的某一状态的逻辑。
  Reusable Model,是一个虚的概念,并不是一个父类,通常这类Model都负责某一个特定的功能,可以重复利用,可看做游戏引擎的延伸。
  我会将Character Manager和Reusable Model继承MonoBehavior,这样我们就能够直观地知道这个角色是什么类型的Character,并且可以利用inspector调节Model的参数。



  最简单的方法是使用struts或jsf等mvc的框架,本身就是一个实现。如果自己实现,比较复杂的就是要自己写一个总控制器,接受所有用户的请求,进行分发给其他servlet或直接进行页面跳转。不建议自己实现,建议使用一个mvc框架,然后搞明白他的生命周期和原理,再去看框架总控制器的源代码,这样比较好。
原理:
jsp发展经历了两个模型时代,jsp模型一时代是把代码都写在jsp页面上,用户访问jsp页面时,jsp页面来对数据库进行操作并返回值到jsp页面,这样第一不好维护,第二安全性不高,第三代码结构不清晰,第四重用性不高。于是就有了jsp模型二时代,人们将所有的页面请求交给一个servlet控制器来接受,然后进行分发,由该servlet来决定调用其他servlet访问数据库还是进行页面跳转,这个servelt就是mvc中的c,struts中好像叫actionservlet,jsf中叫facesservelt,web.xml中配置的就是总servlet控制器,为了更好的分层,重用,降低依赖性,就有了mvc,由m层接受和绑定用户的数据,v层进行展现,c层进行控制。

目前主流的开发模式是四层开发模式:界面层(page)+动作处理层(action)+业务逻辑层(service)+数据访问层(dao),page层用于展现页面,action层用于捕获用户事件并调用service层处理业务逻辑,service要处理业务逻辑肯定就要对数据库进行增删改查,拼接hql语句,然后调用dao层对数据库进行操作,hibernate完成的就是dao层。但是这样一来action层对service层产生了依赖,因为要创建一个service接口的引用,service层对dao层产生了依赖,就是说实例化一个action层的对象,同时要至少实例化一个service层和至少实例化一个dao层,于是spring的ioc就可以起作用了,就可以降低各层之间的依赖。将各层做为接口对象实例配置到spring中,降低依赖。
软件
前端设计
程序设计
Java相关