简体   繁体   English

我如何在 C# 中为 Unity 制作骰子的分数计数器?

[英]How do i make a score counter for a dice in C# for Unity?

im trying to make a scoreboard for a dice counter, for example if i roll a 1, you gain 1 point to the scoreboard, if you roll a 6, 6 points added to the scoreboard.我正在尝试为骰子计数器制作记分牌,例如,如果我掷出 1,则记分牌获得 1 分,如果掷出 6,则记分牌获得 6 分。 Heres my code for the dice rolling:这是我的掷骰子代码:

using System.Collections;
using UnityEngine;

public class Dice : MonoBehaviour
{
// Array of dice sides sprites to load from Resources folder
private Sprite[] diceSides;

// Reference to this sprite renderer to change sprites
private SpriteRenderer rend;

// Use this for initialization
private void Start()
{
    // Assign Sprite Renderer component
    rend = GetComponent<SpriteRenderer>();

    // Load dice sides sprites to array from DiceSides subfolder of Resources folder
    diceSides = Resources.LoadAll<Sprite>("DiceSides/");
}

// If you left click over the dice then RollTheDice coroitine is started
private void OnMouseDown()
{
    StartCoroutine("RollTheDice");
}

//coroutine that rolls the dice
private IEnumerator RollTheDice()
{
    //variable to contain random dice side number
    //it needs to be assigned, let it be 0 initially
    int randomDiceSide = 0;

    //Final side or value that dice reads in the end of coroutine
    int finalSide = 0;

    //loop to switch dice sides randomly
    //before final side appears, 20 itterations here
    for (int i = 0; i <= 20; i++)
    {
        // Pick up random value from 0 to 5 (all inclusive)
        randomDiceSide = Random.Range(0,5);

        //set sprite to upper face of dice from array according to random value
        rend.sprite = diceSides[randomDiceSide];

        // Pause before next itteration
        yield return new WaitForSeconds(0.05f);
    }

    // Assigning final side so you can use this value later in your game
    // for player movement for example
    finalSide = randomDiceSide + 1;

    // Show final dice value in console
    Debug.Log(finalSide);

    //Attempt to add to the score board in game
}
}

Also i have a code for a scoreboard, i just don't know how to link it with the "dice sides", here it is:我也有一个记分牌的代码,我只是不知道如何将它与“骰子面”联系起来,这里是:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreScript : MonoBehaviour
{
public static int scoreValue = 0;
Text score;

void Start()
{
    score = GetComponent<Text>(); 
}

// Update is called once per frame
void Update()
{
    score.text = "Score:" + scoreValue;
}
}

So if I got all correctly the thing that you're asking for is that if you first roll the dice and it shows 1 and you roll the dice again and now the dice shows a 6. You want to add them together so the Scoreboard shows 7?所以如果我猜对了,你所要求的就是,如果你先掷骰子,它显示 1,然后再次掷骰子,现在骰子显示 6。你想把它们加在一起,这样记分板就会显示7? If so that's the case you can add:如果是这样,您可以添加:

        Scoreboard.scoreValue += finalSide;

at the bottom of your script like this:在你的脚本底部是这样的:

using System.Collections;
using UnityEngine;

public class Dice : MonoBehaviour
{
// Array of dice sides sprites to load from Resources folder
private Sprite[] diceSides;

// Reference to this sprite renderer to change sprites
private SpriteRenderer rend;

// Use this for initialization
private void Start()
{
    // Assign Sprite Renderer component
    rend = GetComponent<SpriteRenderer>();

    // Load dice sides sprites to array from DiceSides subfolder of Resources folder
    diceSides = Resources.LoadAll<Sprite>("DiceSides/");
}

// If you left click over the dice then RollTheDice coroitine is started
private void OnMouseDown()
{
    StartCoroutine("RollTheDice");
}

//coroutine that rolls the dice
private IEnumerator RollTheDice()
{
    //variable to contain random dice side number
    //it needs to be assigned, let it be 0 initially
    int randomDiceSide = 0;

    //Final side or value that dice reads in the end of coroutine
    int finalSide = 0;

    //loop to switch dice sides randomly
    //before final side appears, 20 itterations here
    for (int i = 0; i <= 20; i++)
    {
        // Pick up random value from 0 to 5 (all inclusive)
        randomDiceSide = Random.Range(0, 5);

        //set sprite to upper face of dice from array according to random value
        rend.sprite = diceSides[randomDiceSide];

        // Pause before next itteration
        yield return new WaitForSeconds(0.05f);
    }

    // Assigning final side so you can use this value later in your game
    // for player movement for example
    finalSide = randomDiceSide + 1;

    // Show final dice value in console
    Debug.Log(finalSide);
    Scoreboard.scoreValue += finalSide;
    //Attempt to add to the score board in game
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM