【问题标题】:Ending a game in Unity - Alphabet Game在 Unity 中结束游戏 - 字母游戏
【发布时间】: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


    【解决方案1】:

    如果我理解您的问题,您可以在 Letter = 'z' 重新启动场景或移动到另一个场景,其中显示“您已完成游戏,您可以立即关闭游戏”,或者只是禁用场景中结束游戏旁边的所有内容文字或类似的东西。

    我希望这个答案有用并祝你好运。

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多