多语言展示
当前在线:266今日阅读:99今日分享:20

unity3d棋牌游戏教程

这次千锋老师的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

发牌逻辑:

5

设置牌堆的显示,动画依次给每位玩家发一张卡牌,发完牌后,隐藏牌堆,并将玩家的卡牌排序并展示。

推荐信息