这次小编的Unity3D棋牌游戏教程主要教手机斗地主的发牌功能的实现,话不多说,咱们先创建项目:
1.创建Unity2017的2D项目,暂且叫做ChinesePoker吧,就用自带的UGUI来编辑UI, 目前只导入iTween插件,用来方便控制动画效果。
目录结构如下:
考虑卡牌需要动态生成,我把图片资源放到Resource目录,并按照Card_类型(大小王,红桃,黑桃,方片,梅花 )_数字(卡牌所在类型中的数字)命名。
2.建第一个场景,默认叫001_Playing,作为主要玩牌的场景,暂时作为第1个场景,后期新场景添加进来,我们可能再调整场景的顺序。
添加一个UI->Image,选择一个背景图片;
添加3个UI->Canvas,分别取名叫Player0,Player1,Player2,代表玩家,对手1,对手2;
每个Player底下,添加一个Image,选择卡牌背面图片,分别表示发牌时各自牌堆的位置,并在桌面放置一个总牌堆的位置,默认not active;
建一个卡牌的图片,命名为Card,并作为预制件,放入Player0中间一个,稍微偏移一定位置再放置一个,用来计算每张牌跟临牌相对位置,设置not active;
建一个卡牌的背面图片,命名Cover,也作为预制件;
添加一个测试按钮TestButton;
差不多了,大概结构如下:
创建卡牌、玩家信息
1.新建CardInfo类,主要不要继承默认的MonoBehaviour类,用来作为卡牌的实体类;
实现IComparable接口,后面手牌排序会用到。
2.Card预制件上,添加Card脚本,主要保存对应CardInfo信息、选中状态,并加载卡牌图片;
3.考虑玩家分为2种类型,先创建一个公共的基类,实现玩家公共的方法,比如增加一张卡牌、清空所有卡片、排序等;
4.添加第一种玩家(自身玩家)PlayerSelf,继承Player,并挂载到Player0对象上;
实现整理手牌的逻辑:发牌后,从中间的位置,根据大小依次将牌展开;
获取牌面点击事件,将牌选中或取消选中;
5.添加另一种玩家(对手玩家)PlayerOther,继承Player,并挂载到Player1,Player2对象上;
在Camera上添加卡牌管理脚本:CardManager
1.实现洗牌逻辑,这里用生成GUID随机性后排序,达到洗牌的目的;
2.记录当前发牌回合,每发一张牌,跳转给下一个玩家;
3.记录当前玩牌回合(将来可能用到),每玩一局,跳转下个玩家开始发牌;
4.发牌逻辑:
设置牌堆的显示,动画依次给每位玩家发一张卡牌,发完牌后,隐藏牌堆,并将玩家的卡牌排序并展示。
以上就是小编的Unity3D棋牌游戏教程了,详细代码欢迎前来咨询~
如果你还觉得不过瘾的话,就可以尝试反编译一些市面上流行的Unity3D游戏来获取代码,毕竟真实生产环境中的代码才是最值得深入研究的
在完成以上的学习过程中,看一些第三方的博客也是蛮有用的手段,在这里推荐下小编学习Unity3d的网站,从基础的数据类型讲起,到后期的面向对象,正则表达式,包含委托事件特性等高级课程。这套课程非常全面,从入门到就业全包啦!
https://www.bilibili.com/video/BV1wZ4y1A7if