搜论文知识网论文发表基于Unity的Web游戏设计与实现

所属栏目:电子技术论文 发布日期:2014-08-20 16:20 热度:

  对于独立开发者和工作室,Unity做为大众化开发系统,扫除了创造独特游戏的时间和成本上的障碍。使用Unity可以在创建在任意平台上(Web Player,PC,MAC,Linux,iOS,Android等)吸引和愉悦玩家的游戏。

  摘 要:Unity是一个用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型创作工具。Unity是一个游戏开发生态系统:强大的渲染引擎,完全集成一整套直观工具和快速工作流程,可以创建互动式3D、2D内容;文章以一款翻转匹配记忆游戏为例,从游戏的策划构思设计和程序具体实现等进行介绍。游戏开发人员可以基于此文章,利用Unity开发多平台的游戏。

  关键词:搜论文知识网,Unity,C#,用户图形界面,翻转匹配记忆游戏

  Unity的游戏脚本为基于Mono的Mono脚本,一个基于.NET Framework的开源语言,因此程序员可用C#,JavaScript等加以编写。C#是微软推出的一种面向对象的高级编程语言,具有适合快速上手开发的优势。在介绍游戏实现也用C#代码进行补充说明。翻转匹配记忆类型游戏是一种考验记忆力的游戏,这种游戏不仅适合小孩,也可以锻炼成人的记忆力。本人以机器人修复游戏为例介绍如果在Unity引擎和C#语言的帮助下,开发用Web Player发布的网络游戏。

  1 游戏设计

  1.1 玩法介绍

  玩家在背面向上(未知内容)的网格卡片里,通过翻开查看的方式寻找匹配的两张卡片,并且必须同时找出来。即玩家第一次翻转A卡片,第二次必须翻转与A卡片匹配的B卡片,如果翻转的是C卡片(不与A卡片匹配),则两张卡片再次翻转回去,呈现背面向上(未知内容)的形式。用机器人修复游戏说明,玩家修复机器人的意思是:玩家第一次翻开的是一种类型机器人的部分身体,下一次必须翻开的是这种类型机器人与之配对的另一部分身体,以此用来修复机器人。当翻转的卡片为配对卡片时,两张卡片从游戏区域移除,当玩家移除掉所有卡片后,游戏胜利。玩家通过不停的翻转卡片,在脑海里记忆卡片位置,从而快速找出配对卡片。

  1.2 界面设计

  1.2.1 游戏标题

  在标题里需要有游戏名字,游戏基本背景说明,开始按钮。在这个标题里需要用图片的艺术形式来展现整体游戏风格,以此来吸引玩家。

  1.2.2 游戏区界面

  游戏区主要需要确定卡片的数量,考虑到以后的扩展设计(卡片数量能方便的调整),所以需要用动态加载卡片的方式进行加载。除此之外,因为游戏标题和游戏区界面是两个不同的场景显示,需要有双向的通道,在标题里有“开始按钮”做为通向游戏区的通道,在游戏区里需要有返回标题的按钮作为通道。

  1.3 游戏关键判断逻辑

  游戏的关键是消去配对的卡片。必须设定不让玩家翻转超过两张卡片,当玩家翻转第二张卡片后,进入判断流程:如果卡片相匹配,则消去两张卡片,如果不匹配,则翻转回未知状态。之后,继续翻转流程。

  1.4 游戏性的探索

  1.4.1 游戏声音运用

  当卡片翻转成功后,需要有提示音反馈给玩家,以此来提示配对成功,增加游戏的体验。同时游戏进行时,增加了背景音乐来增强游戏性。

  1.4.2 游戏时间限制

  为了增加游戏紧张气氛和给予玩家一定的刺激度,可以增加限定时间的设置,规定玩家必须在限定时间里完成全部配对,当增加时间限定后,可以充分起到锻炼记忆力的目的。游戏里增加一个逐渐减少的时间条用以标识时间的流逝。

  1.4.3 难度设置

  为了让游戏适合不同能力的玩家,引入难度机制。难度机制可以让初级玩家和高级玩家体验到游戏的乐趣。

  2 游戏主要功能实现及运行效果

  2.1 卡片类实现

  为了实现游戏逻辑,定义了Card类。isFaceUp表明卡片是否为翻开状态,游戏逻辑检测到这个状态时,会把卡片显示为翻开的状态。 isMatched表明卡片是否已经匹配成功,游戏逻辑检测到此状态时,在卡片位置显示一块白色区域,并且不能再被点击,表明卡片已被移走。img变量记录Assets里的资源文件的名字,用来指明显示图片。

  设置相同的id变量在两张匹配的卡片里,为了匹配逻辑使用。

  class Card:System.Object

  {public bool isFaceUp=false;//检查是否为翻开状态

  public bool isMatched=false;//检查是否匹配成功

  public string img;//定义卡片显示的图片

  public int id;//唯一标示卡片,为匹配卡片时使用}

  2.2 随机性放置卡片

  游戏一般在每次运行时,卡片区的卡片会有不同的顺序显示,需要实现随机功能来实现。在BuildDeck()函数里把需要显示的卡片数加载到Deck(卡片组)里,之后用Random.Range实现按照随机的顺序从Deck选出卡片。

  BuildDeck();

  for(int i=0;i  for(int j=0;j  int someNum= Random.Range(0,aCards.Count);

  aGrid[i,j]=aCards[someNum];aCards.RemoveAt(someNum);}}

  2.3 用户图形界面

  用Unity自带GUI(用户图形界面)动态生成多个按钮形成卡片,行数(rows)和列数(cols)需要提前设定。代码位于OnGUI函数(程序每运行一帧会执行)中:   for(int i=0;i  for(int j=0;j  Texture t= Resources.Load(strShow) as Texture;

  if(GUILayout.Button(t,GUILayout.Width(cardW)))

  {//按钮按下后处理逻辑}}}

  2.4 游戏关键判断逻辑

  游戏关键逻辑是限制每次只能点击2张不同的卡片,之后需要进行判断,用一个容器来获得这2张卡片,当下次再需要加入时,进行判断,拒绝加入。

  //判断如果是选择的同一张图.不加入aCardsFlipped.

  If (aCardsFlipped.IndexOf(each)<0){

  aCardsFlipped.Add(each);}

  if (aCardsFlipped.Count==2){

  //如果有2个对象加入.不能再按键.

  playerCanClick=false;}

  2.5 选择Web Play发布

  当游戏调试通过后,在File菜单里选择Build Setting进行设定,选择Web Player发布,当Unity图标在Web Player右侧时代表选中。游戏运行效果截图如下:

  图1 Web Player发布

  图2 游戏运行画面

  3 结束语

  该机器人修复游戏可以在任何安装Unity web player插件的网络浏览器里运行,因此具有跨平台的先天优势。除能实现基本的翻转游戏功能以外,还能实现限时,难度设置,声音提示等扩展功能。经过实验测试,界面美观,结果正确,各项功能达到游戏要求。该实现方法可以对其他基于Unity开发的Web游戏起到抛砖引玉的作用。作者已经发布游戏如下:读者可以进行参考。

  http://www.kongregate.com/games/Moomlight/training-game

  参考文献:

  [1][美]ANDRE LAMOTHE.Windows游戏编程大师技巧[M].北京:中国电力出版社,2001.

  [2][美]Ryan Henson Creighton.Unity 3D Game Development by Example Beginner's Guide[M].Packt Publishing Limited,2011.

  [3][美]Will Goldstome.Unity 3.x游戏开发经典教程[M].北京:科学出版社,2013.

文章标题:搜论文知识网论文发表基于Unity的Web游戏设计与实现

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/dianzijishu/22432.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3