C# Unity和Visual Studio-按钮不起作用的问题
所以我从YouTube下载了Sloan Kelly纸牌游戏项目最终版本的资产文件,当时我正在玩这个游戏,一切正常 第二天,我重新打开了游戏,这个项目的“粘贴按钮”不再工作了。它出现在屏幕上,看起来很难处理,但它不会按下 我对代码做了一些修改,使其更易于阅读,但我认为我没有对这个按钮做任何修改。代码的其余部分运行良好,仅此一个按钮 我不确定如何在这个场景中链接我的项目资产包,但我可以向您展示按钮的代码,我只是想知道是否有人可以立即看到问题/您能否告诉我如何链接整个文件,以便您可以更好地了解正在发生的事 提前谢谢C# Unity和Visual Studio-按钮不起作用的问题,c#,visual-studio,unity3d,blackjack,C#,Visual Studio,Unity3d,Blackjack,所以我从YouTube下载了Sloan Kelly纸牌游戏项目最终版本的资产文件,当时我正在玩这个游戏,一切正常 第二天,我重新打开了游戏,这个项目的“粘贴按钮”不再工作了。它出现在屏幕上,看起来很难处理,但它不会按下 我对代码做了一些修改,使其更易于阅读,但我认为我没有对这个按钮做任何修改。代码的其余部分运行良好,仅此一个按钮 我不确定如何在这个场景中链接我的项目资产包,但我可以向您展示按钮的代码,我只是想知道是否有人可以立即看到问题/您能否告诉我如何链接整个文件,以便您可以更好地了解正在发生
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class GameController : MonoBehaviour
{
int dealersFirstCard = -1;
public CardStack player;
public CardStack dealer;
public CardStack deck;
public Button hitButton;
public Button stickButton;
public Button playAgainButton;
public Text winnerText;
/*
* Cards dealt to each player
* First player hits/sticks/bust
* Dealer's turn unyil minimum of 17 value in hand
* Dealers cards: first card is hidden, other cards are facing
*/
#region Hit
public void Hit()
{
player.Push(deck.Pop());
if (player.HandValue() > 21)
{
hitButton.interactable = false;
stickButton.interactable = false;
StartCoroutine(DealersTurn());
}
}
#endregion
#region Stick
public void Stick()
{
hitButton.interactable = false;
stickButton.interactable = false;
StartCoroutine(DealersTurn());
}
#endregion
#region Play Again
public void PlayAgain()
{
playAgainButton.interactable = false;
player.GetComponent<CardStackView>().Clear();
dealer.GetComponent<CardStackView>().Clear();
deck.GetComponent<CardStackView>().Clear();
deck.CreateDeck();
winnerText.text = "";
hitButton.interactable = true;
stickButton.interactable = true;
dealersFirstCard = -1;
StartGame();
}
#endregion
void Start()
{
StartGame();
}
void StartGame()
{
for (int i = 0; i < 2; i++)
{
player.Push(deck.Pop());
HitDealer();
}
}
void HitDealer()
{
int card = deck.Pop();
if (dealersFirstCard < 0)
{
dealersFirstCard = card;
}
dealer.Push(card);
if (dealer.CardCount >= 2)
{
CardStackView view = dealer.GetComponent<CardStackView>();
view.Toggle(card, true);
}
}
#region Dealers turn
IEnumerator DealersTurn()
{
hitButton.interactable = false;
stickButton.interactable = false;
CardStackView view = dealer.GetComponent<CardStackView>();
view.Toggle(dealersFirstCard, true);
view.ShowCards();
yield return new WaitForSeconds(1f);
while (dealer.HandValue() < 17)
{
HitDealer();
yield return new WaitForSeconds(1f);
}
if (player.HandValue() > 21 || (dealer.HandValue() >= player.HandValue() && dealer.HandValue() <= 21))
{
winnerText.text = "You Lose!";
}
else if (dealer.HandValue() > 21 || (player.HandValue() <= 21 && player.HandValue() > dealer.HandValue()))
{
winnerText.text = "You Win!";
}
else
{
winnerText.text = "The house wins!";
}
yield return new WaitForSeconds(1f);
playAgainButton.interactable = true;
}
#endregion
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
公共类游戏控制器:单行为
{
int dealersFirstCard=-1;
公共纸牌机;
公共信用卡经销商;
公共卡栈甲板;
公共按钮点击按钮;
公共按钮粘贴按钮;
公共按钮播放按钮;
公共文本winnerText;
/*
*发给每位玩家的牌
*第一名球员击球/棍棒/胸围
*经销商的回合unyil最低值为17
*经销商卡:第一张卡是隐藏的,其他卡是面对的
*/
#区域打击
公开无效点击()
{
player.Push(deck.Pop());
如果(player.HandValue()>21)
{
hitButton.interactiable=false;
stickButton.interactiable=false;
开始例行程序(DealersTurn());
}
}
#端区
#区域棒
公共空棒()
{
hitButton.interactiable=false;
stickButton.interactiable=false;
开始例行程序(DealersTurn());
}
#端区
#地区重赛
公共图书馆
{
playAgainButton.interactiable=false;
player.GetComponent().Clear();
dealer.GetComponent().Clear();
deck.GetComponent().Clear();
deck.CreateDeck();
winnerText.text=“”;
hitButton.interactiable=true;
stickButton.interactiable=true;
dealersFirstCard=-1;
StartGame();
}
#端区
void Start()
{
StartGame();
}
void StartGame()
{
对于(int i=0;i<2;i++)
{
player.Push(deck.Pop());
HitDealer();
}
}
无效经销商()
{
int card=deck.Pop();
if(dealersFirstCard<0)
{
dealersFirstCard=信用卡;
}
经销商。推(卡);
如果(dealer.CardCount>=2)
{
CardStackView视图=dealer.GetComponent();
视图。切换(卡片,真);
}
}
#地区经销商转向
IEnumerator DealersTurn()
{
hitButton.interactiable=false;
stickButton.interactiable=false;
CardStackView视图=dealer.GetComponent();
查看.切换(dealersFirstCard,true);
view.ShowCards();
返回新的等待秒(1f);
while(dealer.HandValue()<17)
{
HitDealer();
返回新的等待秒(1f);
}
如果(player.HandValue()>21 | | |(dealer.HandValue()>=player.HandValue()&&dealer.HandValue()21 | |(player.HandValue()dealer.HandValue()))
{
winnerText.text=“你赢了!”;
}
其他的
{
winnerText.text=“房子赢了!”;
}
返回新的等待秒(1f);
playAgainButton.interactiable=true;
}
#端区
}
当庄家轮到你时,你的按钮就变得不可交互。之后,从代码中,如果你再也不重新启用它-这应该很容易用调试命令来证明。在再次播放按钮上重新启用。在提供的代码中,我看不到任何显示玩家第二次轮到的余量的内容。并且当交易开始时rs回合开始后,它将禁用打杆,在新游戏开始前,任何东西都不会重新启用