制作九宫格旋转拼图游戏

前言:昨天上班摸鱼时实在无聊,就顺手新建一个项目做个小游戏试试,不消20分钟就做好了。但是看着游戏画面熟悉,突然想起去年实习时,就是因为这个游戏没做起,被上家公司辞退了。鉴于此游戏对我Unity生涯具有重要意义,让我卧薪尝胆,所以今天趁着周末发到网上来,供部分小白参考,也让我铭记这段耻辱过去。

 

1.首先Unity的Hierarchy面板下新建九张Image,并按顺序命名1 2 3......,并把这九张图片作为子物体放在任意游戏物体下,在该物体身上添加GridLayoutGroup组件调整子物体的位置距离等。

 

 2.然后为这九张图片添加Text子物体,同样的Text也为其按顺序赋值(主要是为了可以在游戏界面中看清顺序)。同时继续创建四个Button,调整位置在拼图块1 2 4 5的中间,其余同理。

3.添加脚本MovePuzzle,并放在Canvas下,用于控制游戏逻辑。

 

 

 

 这是主要代码。puzzles是存放九个拼图块的数组,该方法的四个参数分别是要控制的四个拼图块在数组中的索引。第一步是交换位置,我使用了DoTween插件为交换位置的过程添加了动画,这是很普通的位置交换代码(先用临时变量存放第一个拼图块的位置,再依次交换)。之后就是重中之重了:

该游戏在玩家看来,难点在于每一组按钮控制的拼图块都有重合的块;开发者的难点也是这点。因为puzzles数组存放的RectTransform对象,是引用类型,如果我们还是直接使用普通交换(类似int a=10;int b=20;int temp=a;a=b;b=temp;)是行不通的,因为引用类型会跟着变换(不严谨,详细可查百度)。所以我的方法是,直接再新建对象,从parent的子物体中找到此物体并存放。再重新为puzzles数组赋值,如此即可。

4.接下来放剩余部分代码,前面没看懂可以先看这段再回过头看。

 

 OnValidate方法是我懒得为游戏物体改名,可看我上篇随笔对此方法使用或百度。为四个button添加监听事件,传入的参数是该按钮控制的拼图块在数组中的索引。

下面是游戏效果:

 

总结:此游戏对于一些老鸟来说不算难,甚至可以说简单了,但是对于新手来说却始终无法找到破局的方法,去年我坐了一天也没想清为啥做不出。其中脚本的方法不是最好的,但是我认为这是特别容易理解的一种方法,起到抛砖引玉之效。

posted @   军酱不是酱  阅读(1321)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示