unityD学习之纯代码实现功能.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unityD学习之纯代码实现功能

????????由于这次的图集是本人自己抠出来,自动Slice后,最顶部会有一小块多余的像素,可以直接删除,也不用改名字,直接保存就好。 ? ????? 为了方便布局,这里给大家一个参数的设定,在导入设置里设定Pixels To Units 为132,后面脚本中的设置都基于这个数值 ? ? ? ?????? 切完之后,把图集丢到Resources文件夹中,Resources文件夹在Unity里有特殊的作用,可以在脚本中通过Resources类进行访问,接着拖出分别最后一张背景Sprite、倒数第二张方格Sprite,第一张卡片Sprite,将方格Sprite的排序层置于背景Sprite上层,而卡片Sprite置于方格Sprite上层。以此是 卡片-方格-背景。 ? ? ??????? ????? 接着创建一个名为Card的脚本,什么都不用写,拖拽到卡片Sprite上。将方格Sprite和卡片Sprite做成预置,完成之后,在层次面板上删除这两个预置,OK,开始代码部分, ????? 首先,我们要做好大的背景区域,通过脚本创建16个小方块格子,通过不精准的计算,得出第一个方格的起始点的位置应该是(-1.65,1.65),每个方格的间距是1.1,为了编写代码的方便,我们将这些数据存放在一个帮助类(HelpPosition)中,代码如下: ?????? 方法GetPosVector2用于根据xy下标,返回该索引处的卡片的位置。文章来自【狗刨学习网】 ?????? 做好帮助类之后,我们来实现对16个格子的布局,其实就是做一个潜逃循环,计算卡片的位置即可代码如下: ?????? 需要注意的是,这里外层循环的x,是行数,y是列数,传递下标的时候,也按照这个顺序,第一个索引为行数,第二个索引为列数。完成之后拖拽脚本到背景Sprite上,运行游戏后棋盘格子就已经出来了。 ? ? 接下来我们创建一个GameManager脚本,挂载到背景Sprite上,用于控制游戏的流程。成员字段如下: ? ?????? Start中,生成两个卡片[CreateCard方法],Update中主要是相应键盘的操作[Movexx方法],实现如下: ?????? CreateCard的主要实现思路是,每次生成一个卡片时计算当前数组中的卡牌数,如大于等于16则游戏重置;否则随机生成坐标点,判断当前坐标处位置是否有卡片存在,知道找到空余位置,并实例化卡片对象,通过对时间的数学运算,调用Card类中的方法,生成2/4卡片。 ResetGame方法的实现 剩下的,就是响应鼠标输入,移动卡片了,以向上移动为例,主要逻辑思路如下: 1 遍历卡片数组,寻找一个存在的卡片 2每寻找到一个存在的卡片,沿着移动方向上每一个格子做判断,看当前格子中是否有卡片,找到离自己最近的卡片做如下判断 如果最近的卡片与本身卡片数值一致,则做Card类中的(Merge方法)合并操作; 否则,则将卡片移到该格子的临近格子 ---注意沿着移动方向,比如向上移动,则处于第四行的卡片向第三行,第二行,第一行依次查找遍历。 向上方向的代码实现如下: ??????? 根据上面的逻辑,完成四个方向上的操作即可,接下来完成的是Card类 ??????? card类中,通过对Resources文件夹中的Sprites进行读取,根据卡片的编号,更改SpriteRenderer,从而改变2 4 8 卡片的数值,同时也可以通过编号进行记分功能,成员字段如下: ?????? 在Awake方法里,对Sprites数组进行赋值 ?????? [code]csharpcode: ???????? ?void Awake() { ????????? CardSprites = Resources.LoadAll(fileName); ????????? } ???????? 生成卡片时有个放大的动画,封装到一个方法ScaleSelf中[code]csharpcode:void ScaleSelf() { iTween.ScaleFrom(gameObject,Vector3.zero,.5f); } ????????? ??????? 生成卡片的方法及合并的方法,逻辑基本一致,改变_currentIndex,更改SpriteRenderer组件 至此,2048小游戏的核心功能全部实现完毕~

您可能关注的文档

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档