自身玩家弃牌
- 三个玩家都有弃牌的操作,可以提取到基类中
- 弃牌操作多了些操作,只需要重写即可
- 在比牌失败以及弃牌按钮的点击事件中调用这个方法
BaseManager_Stand
/// <summary>
/// 弃牌
/// </summary>
protected virtual void GiveUpCard()
{
isGiveUpCard = true;//是否弃牌设置为true
go_CountDown.SetActive(false);//隐藏倒计时
txt_GiveUp.SetActive(true);//显示已放弃
m_IsStartStakes = false;//自身是否开始下注设置为false
m_ZjhManager.SetNextPlayerStartStakes();//设置下一位玩家下注
///删除三张牌
foreach (var item in m_SpawnCardLsit)
{
Destroy(item);
}
}
SelfManager_Stand
/// <summary>
/// 弃牌
/// </summary>
protected override void GiveUpCard()
{
base.GiveUpCard();
go_CompareButtons.SetActive(false);//隐藏比牌按钮
go_BottomButton.SetActive(false);//隐藏底部按钮
}
自身玩家加注的处理
- 在UGUI中所有的按钮的点击范围都是一个长方形
- 本游戏中的底部按钮为不规则的图片,所以需要进行设置
- 利用alphaHitTestMinimumThreshold来进行设置UGUI的按钮点击范围
- 设置倍数的颜色,实现当前的倍数颜色和未点击的倍数颜色不同
- 加注的点击,确定当前是几倍,在调用ZhjManager_Stand中的下注方法
- 最后进行设置
SelfManager_Stand
//设置颜色
private void FixedUpdate()
{
if (tgo_2.isOn)
{
tgo_2.GetComponent<Image>().color = Color.gray;
tgo_5.GetComponent<Image>().color = Color.white;
tgo_10.GetComponent<Image>().color = Color.white;
}
if (tgo_5.isOn)
{
tgo_5.GetComponent<Image>().color = Color.gray;
tgo_2.GetComponent<Image>().color = Color.white;
tgo_10.GetComponent<Image>().color = Color.white;
}
if (tgo_10.isOn)
{
tgo_10.GetComponent<Image>().color = Color.gray;
tgo_5.GetComponent<Image>().color = Color.white;
tgo_2.GetComponent<Image>().color = Color.white;
}
}
//设置所有按钮的点击范围
btn_LockCard.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
btn_FollowStakes.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
btn_AddStakes.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
btn_ComapreCard.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
btn_GiveUp.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
tgo_2.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
tgo_5.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
tgo_10.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;
//加注的方法
/// <summary>
/// 加注按钮的点击
/// </summary>
private void OnAddStakesButtonClick()
{
if (tgo_2.isOn)
{
StakesAffter(m_ZjhManager.Stakes(m_ZjhManager.Stakes(0) * 1), "不看");
}
if (tgo_5.isOn)
{
StakesAffter(m_ZjhManager.Stakes(m_ZjhManager.Stakes(0) * 5), "不看");
}
if (tgo_10.isOn)
{
StakesAffter(m_ZjhManager.Stakes(m_ZjhManager.Stakes(0) * 9), "不看");
}
m_IsStartStakes = false;//是否开始下注设置为false
go_CountDown.SetActive(false);//隐藏倒计时
SetBottomButtonInteractable(false);//底部按钮的可交互性设置为false
go_CompareButtons.SetActive(false);//比牌按钮设置为false
m_ZjhManager.SetNextPlayerStartStakes();//设置下一位玩家可以下注
}
自身比牌
- 制作两个按钮,一个和左边玩家进行比牌,一个和右边玩家进行比牌
- 在ZhjManager_Stand中定义两个属性,Get值为 return左右两边玩家中bool值是否弃牌
- 在点击比牌按钮时,调用ZhjManager_Stand中的两个属性进行判断左右两边玩家是否弃牌,如果未弃牌则显示比牌按钮
- 在ZhjManager_Stand中创建自身玩家与两个玩家比牌的方法,广播VSWithSelf这个事件码
- 给两个按钮添加点击事件,调用ZjhManager_Stand中的比牌方法
SelfManager_Stand
/// <summary>
/// 比牌按钮的点击
/// </summary>
private void OnCompareButtonClick()
{
go_CompareButtons.SetActive(true);
if (m_ZjhManager.m_LeftIsGiveUp)
{
btn_CompareLeft.gameObject.SetActive(false);
}
if (m_ZjhManager.m_RightIsGiveUp)
{
btn_CompareRight.gameObject.SetActive(false);
}
}
/// <summary>
/// 与左边玩家比牌的按钮点击
/// </summary>
private void OnCompareLeftButtonClick()
{
m_ZjhManager.SelfPlayerWithLeftPlayerCompared();
SetBottomButtonInteractable(false);
}
/// <summary>
/// 与右边玩家比牌的按钮点击
/// </summary>
private void OnCompareRightButtonClick()
{
m_ZjhManager.SelfPlayerWithRightPlayerCompared();
SetBottomButtonInteractable(false);
}
ZhjManager_Stand
public bool m_LeftIsGiveUp { get { return m_LeftManager.isGiveUpCard; } }
public bool m_RightIsGiveUp { get { return m_RightManager.isGiveUpCard; } }
/// <summary>
/// self玩家与左边玩家比牌
/// </summary>
public void SelfPlayerWithLeftPlayerCompared()
{
EventCenter.Broadcast(EventDefine.VSWithSelf, (BaseManager_Stand)m_SelfManager, (BaseManager_Stand)m_LeftManager, "我", "左边玩家");
}
/// <summary>
/// self玩家与右边玩家比牌
/// </summary>
public void SelfPlayerWithRightPlayerCompared()
{
EventCenter.Broadcast(EventDefine.VSWithSelf, (BaseManager_Stand)m_SelfManager, (BaseManager_Stand)m_RightManager, "我", "右边玩家");
}