1、前言:

  简单的Unity小游戏,切割图片,生成随机区块,拖拽交换位置。

  此游戏代码只贴了一小部分,具体可见GitHub:源码

  效果:

  

2、素材准备

  简单做了下,所以没有用太多素材,只准备了两种字体(毛笔、楷书),准备了两张按钮图片,一张拼图素材图(数码宝贝)。

3、导入素材开始行动

  

4、简易UI框架

  写了一个极简的UI框架:

(1)基类

  只做了显示隐藏方法:

public class BasePanel : MonoBehaviour
{/// <summary>/// 显示面板/// </summary>public void Show(){gameObject.SetActive(true);}/// <summary>/// 隐藏面板/// </summary>public void Hide(){gameObject.SetActive(false);}
}

(2)UIManger

  管理类,做了单例,显示和隐藏面板的方法

public class UIManger : MonoBehaviour
{public static UIManger Instance;public List<BasePanel> panels = new List<BasePanel>();private void Awake(){Instance = this;panels.AddRange(GetComponentsInChildren<BasePanel>());}private void Start(){for (int i = 1; i < panels.Count; i++){panels[i].Hide();}}public T ShowPanel<T>() where T : BasePanel{T panel = panels.Find(p => p is T) as T;panel.Show();return panel;}public T HidePanel<T>() where T : BasePanel{T panel = panels.Find(p => p is T) as T;panel.Hide();return panel;}
}

5、首页

  此处有一个页面跳转,和难度选择,代码不在赘述

  

6、游戏界面

private void Init()
{gridLayoutGroup.cellSize = Vector2.one * (1000 - 5 * (size - 1)) / size;for (int i = 1; i <= size; i++){for (int j = 1; j <= size; j++){if ((i - 1) * size + j > grids.Count){grids.Add(Instantiate(gridPrefab, gridLayoutGroup.transform));}else{grids[i].gameObject.SetActive(true);}grids[(i - 1) * size + j - 1].SetInf(this, size, new Vector2(i, j));}}if (grids.Count > size * size){for (int i = size * size; i < grids.Count; i++){grids[i].gameObject.SetActive(false);}}
}

  此处,用了Layout布局,生成子物体后自动排布,从下到上,从左到右,排序方向是因为,RawImage的UV Rect为此坐标系。

  两个for循环,生成m*m个格子。

  下面则是随机调整位置:

public void RandomList()
{for (int i = 0; i < grids.Count; i++){grids[i].transform.SetSiblingIndex(Random.Range(0, size * size));}
}

  拖动交换位置,用的IBeginDragHandler, IDragHandler, IEndDragHandler几个接口,拖拽后通过SetSiblingIndex方法交换位置。

Unity小游戏(一)——Unity JigsawPuzzle(拼图游戏)相关推荐

  1. 【100个 Unity小知识点】☀️ | Unity 中怎样读取Excel文件

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  2. C语言数组制作拼图游戏,C语言自制拼图游戏.doc

    C语言自制拼图游戏 C语言~~自制-拼图游戏 原帖及讨论:/thread-233257-1-1.html //编译环境VC++6.0. 程序和资源一共15M. 来自 //需要的留个EMAIL.... ...

  3. 拼图游戏代码html5,HTML5拼图游戏代码.doc

    HTML5拼图游戏代码 sliding.html 拼图游戏 拼图游戏 简单 困难 返回菜单 Sliding.jsvar context = document.getElementById('puzzl ...

  4. java 拼图游戏_Java学员作品-拼图游戏

    由于大多数的手机都内置了Java的运行环境,加上Java语言自身的跨平台特性,Java成为了编写手机游戏时最常使用的语言之一. 拼图游戏很多人都玩过,它的游戏规则是将图片进行分割,然后将顺序打乱,要求 ...

  5. python设计拼图游戏tkinter_tkinter做一个拼图游戏

    今天我们利用canvas绘制.删除图片的的函数,以及鼠标事件的绑定来制作一个简单的九宫格拼图游戏. 首先从网上下九张图,它们是把一张图分割成了九宫图,打乱后显示在canvas画布上. 接下来我们只要实 ...

  6. 用html实现网页版的拼图游戏,jQuery实现网页拼图游戏

    之前看了一个页面中将图片分割的效果,感觉不错,有些好奇他是怎么实现的. 跟搭档说了一下,大概明白.其实就是利用 overflow=hidden ,margin-left, margin-top 这三个 ...

  7. 恐龙拼图游戏 - 恐龙世界积木拼图游戏

    转载于:https://www.cnblogs.com/hotmanapp/p/7159407.html

  8. 【Unity3D 灵巧小知识点】☀️ | Unity 中 怎样切换 天空盒 背景

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  9. 【Unity3D 灵巧小知识点】☀️ | Unity 四元数、欧拉角 与 方向向量 之间转换

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  10. 【Unity3D 灵巧小知识点】 ☀️ | Unity中几个简单又常见的报错异常

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

最新文章

  1. 超越PVT、Swin,南大开源高效Transformer:ResT​
  2. hdu 1251 统计难题
  3. 东芝打印机cd40故障_东芝小尺寸UV平板机介绍
  4. 计算机二级c在哪里学习,2017年计算机二级C语言考点学习
  5. linux 32bit 改为64bit问题
  6. WordPress主题 酱茄模块源码
  7. 6s电路图纸 iphone_(分享)iphone6s原理图、点位图(维修必备)
  8. dom4j解析xml获取所有的子节点并放入map中
  9. VUE 学习代码理解(1~5课时代码)
  10. PAT (Basic Level) Practice1006 换个格式输出整数
  11. [转]请不要和陌生女人说话
  12. 数据挖掘导论课后习题答案-第二章
  13. php把字符串日期转成时间戳,php怎样把日期转成时间戳
  14. python算法精解pdf_算法详解(卷1)算法基础 PDF 完整高清版
  15. kudu底层存储引擎的数据组织方式
  16. mysql生成 my.cnf_mysql配置文件my.cnf一键生成工具
  17. 传统零售加速向新零售演进升级,零售数字化势在必行
  18. html内部css调节背景图片的大小,css中怎么改变背景图片大小?
  19. 元宵大师的Python股票量化分析工具QTYX-版本更新说明
  20. spring cloud gateway获取真实ip以及跨服务器时路由转发的一些问题

热门文章

  1. 无人值守煤炭运销系统硬件要求有什么
  2. 学习记录一之数据库操作语句
  3. Live800:用在线客服系统,换你更少的等待
  4. MySQL中 auto_increment如何修改初始值和步长【亲测】
  5. .NET开源工作流ccflow流程引擎功能大全
  6. 时钟系统:CPU为啥需要时钟;此时钟非彼时钟,时钟到底是啥玩意
  7. Android Studio与夜神模拟器进行连接以及连接中出现的问题
  8. vue3 刷新当前页面(provide,inject)
  9. 用pyautogui进行鼠标移动和点击来解放懒狗的手吧!
  10. 计算机英语中translate译为,translate是什么意思_translate的翻译_音标_读音_用法_例句_爱词霸在线词典...