要是3d的游戏框架 mvc还能用mvc吗

Priests and Devils是一款益智类的小游戏,需要在规定的时间内帮助牧师和魔鬼都安全过河。河边有三个魔鬼和三个牧师,他们都想过河,但河上只有一条船,这艘船每次只能搭载两个,而且必须有一个人驾驶船行驶。如果河一边的魔鬼数量多于牧师,牧师将被魔鬼击杀,游戏结束。游戏链接:http://www.flash-game.net/game/2535/priests-and-devils.html
游戏成品图
设置60s倒计时——60s后如果未能安全运送所有魔鬼与牧师,游戏失败。
尝试改进界面,对一些东西还不太熟悉。
1列出游戏中提及的事物(Objects)
Object:三个魔鬼(用白cube表示)、三个牧师(用黑sphere表示)、一艘船、两个岸
2游戏架构:
ISceneController.cs和IUserAction.cs是接口类, ISceneController.cs定义场景控制方法,而FirstController.cs是控制一个场景的具体场景实现,实现的函数定义在ISceneController.cs之中,而场景管理器不知道具体实现方法,具体实现由导演(SSDirector)决定。只有场景设置可见,保证了内部核心代码的安全性。IUserAction.cs定义用户交互方法,UserGUI.cs实现对应方法。MVC,达到模式,视图,控制分离。
例如:1.接收到用户点击事件(UserGUI.cs)
2.调用用户接口函数(函数在IUserAction.cs中)
3.转到函数实现——转到场景控制器FirstController.cs
4.请求具体方法实现——转到导演SSDirector.cs——控制
2.3在 GenGameObjects 中创建 长方形、正方形、球 及其色彩代表游戏中的对象。游戏中用白正方形表示魔鬼,黑球代表牧师,长方体代表船以及两岸。
2.4用表格列出玩家动作表(规则表),注意,动作越少越好
与规则表对应的动作函数表:
行为大致可以分为三种,上船、开船和下船。开船有限制条件,必须要有一个牧师或一个魔鬼船方可开动。
1.上船分为两种对象——牧师和魔鬼。上船这个动作可以把牧师或者魔鬼作为船的子对象,在船中还有空位的时候就可以加进设置子对象的代码。为区分是魔鬼或者牧师,在预设的时候添加对应的Tag。牧师为Priest,魔鬼为Devil
void AboardTheBoat(GameObject obj) {
if (_instance.BCapacity() != <span style="color: #) {
obj.transform.parent = _instance.boat_obj.
if (_instance.boat[<span style="color: #] == null) {
_instance.boat[<span style="color: #] =
obj.transform.localPosition = new Vector3(<span style="color: #, <span style="color: #.2f, -<span style="color: #.3f);
_instance.boat[<span style="color: #] =
obj.transform.localPosition = new Vector3(<span style="color: #, <span style="color: #.2f, <span style="color: #.3f);
2.开船船上必须有一个牧师或者一个魔鬼,将船从一岸到另一个岸边。
3.下船不分对象,但分从船左船右下船,解除子对象绑定,再移动对应对象的位置。
public void getOffTheBoat(int side) {
if (_instance.boat[side] != null) {
_instance.boat[side].transform.parent = null;
if (_instance.state == State.BEND) {
if (_instance.boat[side].tag == "Priest") {
_instance.priestsEnd.Push(boat[side]);
else if (_instance.boat[side].tag == "Devil") {
_instance.devilsEnd.Push(boat[side]);
else if (_instance.state == State.BSTART) {
if (_instance.boat[side].tag == "Priest") {
_instance.priestsStart.Push(boat[side]);
else if (_instance.boat[side].tag == "Devil") {
_instance.devilsStart.Push(boat[side]);
_instance.boat[side] = null;
关于代码,将FirstContorller.cs挂载到空对象,将UserGUI.cs挂载到主摄像机即可运行2.5修改代码,使用 C# 集合类型 有效组织对象,通过 xxSceneController 对象 GenGameObjects 互动完成游戏逻辑。(这一点要求不同,现在改用课件框架。)如需要游戏对象代码,可以动态绑定。 2.6注意事项:1.整个游戏仅主摄像机和一个 Empty对象,其他对象必须代码动态生成!!!。
使用预制动态生成对象。(未包含界面改进后的对象)
2.整个游戏不许出现 Find 游戏对象, SendMessage 这类突破程序结构的 通讯耦合 语句。 违背本条准则,不给分3.注意细节,例如:船未靠岸,牧师与魔鬼上下船运动中,均不能接受用户事件!
大致代码逻辑参考师兄博客。
阅读(...) 评论()本站提供: 好玩的单机游戏,是大型基地网站
Copyright &
跑 跑 车 .All Rights Reserved
备案编号:湘ICP备号-1仅需两小时 慕课网教你学会Unity3D游戏开发
  近日,IT学习网站慕课网上线课程&&《小十传奇》 ,带领开发者使用Unity3D进行休闲游戏开发。随着移动手机游戏盛行,游戏开发人才供不应求,如何成为一名优秀的开发者?慕课网此次上线的课程通过好的架构保证质量,加上方便的工具和优良的方法,带你迅速掌握游戏开发新技能。
  随着移动互联网的发展,移动端游戏日益盛行,据了解,Unity全球开发者超过300万,1/4在,超过5000家游戏公司和工作室在使用Unity3D开发。如果你是一名对Unity3D 基本操作以及 C# 基础语法有一定了解的开发者,那么慕课网这门&Unity3D 休闲游戏开发&课程不容错过。
  该课程介绍了如何用Unity3D开发一款休闲游戏。其中涉及到MVC的游戏开发结构、GDGeek工具库在游戏开发中的使用等知识点,以及敏捷开发的思维方式。
  立即学习:/view/282
  如果你是一名零基础的初学者,可以先在慕课网学习Unity3D入门课程&&《Unity3D快速入门》,先行了解Unity的基本功能和操作以及如何利用Unity学会开发游戏、利用Unity的内置模块实现一些AI和特效。之后再进行更高级的课程学习就轻松多了!
  课程地址:
责编:李文瑶
环球时报系产品
扫描关注环球网官方微信
扫描关注 这里是美国微信公众号
扫描关注更多环球微信公众号

我要回帖

更多关于 unity游戏开发mvc框架 的文章

 

随机推荐