甜甜圈连连看

昨天下午看了一下午的家居vr啥的,觉得没啥进展,闲翻siki教程的时候突然发现有个做连连看的十分有意思,毕竟你平时玩的小游戏知道是怎么做的还是挺有意思的,今天早上去听报告了也没看啥,中午也没回去睡觉就来看了。
一开始也没觉得多难,不过是一个2D游戏嘛,不过确实不简单,一开始就把甜甜圈的图片分了渲染层和模型层,在渲染层加图片,渲染层是模型层的子对象,渲染层的位置不能动,只能移动模型层,将做好的模型层拖到prefab里面做一个预制体,然后开始做背景图巧克力块,因为给的素材是一块巧克力因此需要for循环一块一块生成,本来觉得循环有什么难的,两个循环在一起嵌套做出来了,而且为了在hierarchy面板看起来整齐,
chocolate.transform.setParent(transform);
就让生成的小巧克力都在GameManager底下了,且位置也随着GameManager的位置变化,但是出现了一个问题,不在gamemanager面板的正中央,因为第一个巧克力块(0,0,0)在GameManager面板的正中央,这么肯定大网格在右上角,我一开始觉得可以移动GameManager的position就可以了呀,但是后续游戏就不好做了,因为生成在这里插入图片描述
那么后续的糖果就不是从顶上往下生成了,因此两个嵌套的for循环是不对的,我们仔细想一下, 生成顺序,x是对的从左往右,但是y是相反的,因此我们要让y从上往下生成,这样我们每次就不是加一而是减一,从大网格的最上方往下生成,yRow/2f-y,x的话就让-xColumn+x,但我们又发现了生成的大网格不在正中央,我一开始以为是不均匀,将巧克力块的长度和宽度改成了11还是不对,这时我发现原来是我的小巧克力长度0.64,因此我们要是想在正中央必须移动GameManager的位置,因此我们生成得巧克力大网格的位置必须加上GameManager的位置
最后的公式就是x=transform.position.x - xColumn / 2f + x
y=transform.position.y + yRow / 2f - y
这样我们再修改GameManager的位置就可以了。
做完了大网格之后我觉得一大半难的工作就结束了,谁知道后面的知识我都没有学过:
字典?
结构体?
枚举?
首先枚举小甜品的种类,枚举小甜品的种类是为了在字典中说出这种种类就可以相应的对应出它的预制体
public enum SweetsType
声明一下字典
private Dictionary《SweetsType,GameObject》sweetPrefabDict;
但是我们想在简面板上直接添加prefab在字典中,尽管我们可以吧private改成public但是依然不显示,在这里我们可以采用一个结构体,因为结构体是可以在简面板中显示的,
[System.Serializable]
public struct SweetPrefab
{
//属性
public SweetsType type;
public GameObject prefab;
}
但是这只是一个结构体我们需要做一个结构体的数组,然后在简面板中直接赋值给结构体数组,然后将结构体数组中的数值传给字典
public SweetPrefab[] sweetPrefabs;
在Start方法中实现将数组的值传给字典,首先将字典实例化
sweetPrefabDict=new Dictionary《SweetsType,GameObject》();
for(int i=0;i<sweetPrefabs.Length;i++)
{
if(!sweetPrefabDict.ContainsKey(sweetPrefabs[i].type))
{
sweetPrefabDict.Add(sweetPrefabs[i].type,sweetPrefabs[i].prefab);
}
}

猜你喜欢

转载自blog.csdn.net/vickieyy/article/details/82761450