【发布时间】:2020-11-27 04:37:03
【问题描述】:
I am new to programming and I have followed a video on how to create an Alphabet game in unity which displays a letter on the screen, when 5 of those letters are selected it moves onto the next letter. 我面临的问题是字母 Z 之后的各种字符继续游戏。
我怎样才能在玩家完成字母 Z 后结束我的游戏而不是继续玩其他角色?
下面是我的代码:
游戏控制器:
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class GameController : MonoBehaviour
{
public char Letter = 'a';
int _correctAnswers = 5;
int _correctClicks;
void OnEnable()
{
GenerateBoard();
UpdateDiplayLetters();
}
void GenerateBoard()
{
var clickables = FindObjectsOfType<ClickableLetter>();
List<char> charsList = new List<char>();
for (int i = 0; i < _correctAnswers; i++)
charsList.Add(Letter);
for (int i = _correctAnswers; i < clickables.Length; i++)
{
var chosenLetter = ChooseInvalidRandomLetter();
charsList.Add(chosenLetter);
}
charsList = charsList
.OrderBy(t => UnityEngine.Random.Range(0, 10000))
.ToList();
for (int i = 0; i < clickables.Length; i++)
{
clickables[i].SetLetter(charsList[i]);
}
FindObjectOfType<RemainingCounterText>().SetRemaining(_correctAnswers - _correctClicks);
}
internal void HandleCorrectLetterClick(bool upperCase)
{
_correctClicks++;
FindObjectOfType<RemainingCounterText>().SetRemaining(_correctAnswers - _correctClicks);
if (_correctClicks >= _correctAnswers)
{
Letter++;
UpdateDiplayLetters();
_correctClicks = 0;
GenerateBoard();
}
}
private void UpdateDiplayLetters()
{
foreach (var displayletter in FindObjectsOfType<DisplayLetter>())
{
displayletter.SetLetter(Letter);
}
}
private char ChooseInvalidRandomLetter()
{
int a = UnityEngine.Random.Range(0, 26);
var randomLetter = (char)('a' + a);
while (randomLetter == Letter)
{
a = UnityEngine.Random.Range(0, 26);
randomLetter = (char)('a' + a);
}
return randomLetter;
}
}
非常感谢任何帮助!
【问题讨论】:
标签: javascript c# unity3d game-development