[英]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.