Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
unity连连看教程_一个连连看游戏里面有很多小游戏,希望能够帮助你!!!。
Unity的自学也有近半年,掌握了一些基础知识,也跟着官方的教程做了几个项目,自认为是入了门。因此总希望能够自己独立完成一个项目,完整地体验游戏制作始末的同时,也能借此搞清楚之前学得模棱两可的知识。因为本身是为了兴趣,而非专业人士,所以这次的项目选择了一个比较简单的连连看游戏。
学习Unity之前,也用JavaScript(因为Canvas的渲染比较方便)实现过几个小游戏(俄罗斯方块、数字迷宫之类的),但其体验与使用游戏引擎制作游戏有很大的区别,因此这次的连连看项目的完成也算是一次全新的体验,从中亦获益良多。这篇文章分上下两篇,分别对应前后两个版本,我会将主要的笔墨放在这个项目的几个关键问题与解决的方案,将之作为我对此次项目制作的一个总结,中间难免会出现各种各样的错误与不足,希望各路大佬指正。
关于连连看游戏的主要规则相信大家都很熟悉,我在这里就略过不提了。在第一个版本中,基本实现了连连看游戏功能,包括关卡自动生成、点击事件响应、方块消除、计分计时、通关-失败判定、暂停继续、返回主菜单、难度设置等。设置了简单、一般与困难三个难度等级,难度调整主要由图片数量与方块数量控制。关卡模式为单关卡模式。
一、数据结构的选择:
//Vector结构体 public struct Vector {
public int x, y; //这里定义了五个静态变量,用于表示方向与空向量((-1, -1)这个点不会在游戏中使用到) static public Vector left = new Vector(-1, 0); static public Vector right = new Vector(1, 0); static public Vector up = new Vector(0, -1); static public Vector down = new Vector(0, 1); static public Vector Null = new Vector(-1, -1); public Vector(int x_, int y_) {
this.x = x_; this.y = y_; } } //Map类 public class Map<T> where T : new() {
T[ , ] data; public Map(Vector v) {
data = new T[v.y, v.x]; for (int i = 0; i < v.y; i++) {
for (int j = 0; j < v.x; j++) {
data[i, j] = new T(); } } } public T getData(Vector v) {
return this.data[v.y, v.x]; } public void setData(Vector v, T element) {
this.data[v.y, v.x] = element; } }
由于之前一直用的是C++,对于C#的很多语法还不是很熟悉,因此在写Map类的过程中,涉及二维数组的声明与初始化的问题还是让我头疼了一下。这里稍微提一下我查到的关于C#二维数组的声明与初始化的方法(只是个人总结,局限性较大,仅供参考):
//方法一: int[ , ] array = new int[m , n]; //声明一个m * n的二维数组 int[ , ] array = new int[m , n]{
{
数组1}, {
数组2}, ...... , {
数组m}}; //对二维数组进行初始化 //方法二: int[][] array = new int[m][]; //声明一个含有m个一维数组的数组 //然后可以对数组array进行逐个的初始化 array[0] = 数组1; ...... array[m - 1]
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章