我想随机化ballValue的范围从1到100

本文关键字:范围 随机化 ballValue | 更新日期: 2023-09-27 18:11:00

如何将ballValue从随机范围1到100随机化,使每个球具有不同的值对象

的随机值
using UnityEngine;
using System.Collections;
public class HT_Score : MonoBehaviour {
    public GUIText scoreText;
    public int ballValue;
    private int score;
    void Start () {
        score = 0;
        UpdateScore ();
    }
    void OnTriggerEnter2D (Collider2D other) {
        score += ballValue;
        UpdateScore ();
    }
    void OnCollisionEnter2D (Collision2D collision) {
        if (collision.gameObject.tag == "Bomb") {
            score -= ballValue * 2;
            UpdateScore ();
        }
    }
    void UpdateScore () {
        scoreText.text = "SCORE:'n" + score;
    }
}

我想随机化ballValue的范围从1到100

你的函数应该看起来像

void GetRandomBallValue()
{
 ballValue=new Random().Next(1,100);
}
     void OnCollisionEnter2D (Collision2D collision) {
        if (collision.gameObject.tag == "Bomb") {
            GetRandomBallValue();
            score =ballValue * 2;
            UpdateScore ();
        }
    }

你不应该每次都调用new Random()

"每次执行new Random()时,都会使用时钟初始化它。这意味着在一个紧密循环中,你会多次得到相同的值。你应该保留一个随机实例,并在同一个实例上继续使用Next。"在这里看到的:只生成一个随机数的随机数生成器

您还必须考虑,next()返回一个从1到100(不包括100)的随机数。如果希望包含100,则需要调用next(1,101)。

我建议这样做:

Random rnd = new Random();
void GetRandomBallValue()
{
    ballValue=rnd.Next(1,101); //excluding 101 - if you do not need 100, call Next(1,100);
}
void OnCollisionEnter2D (Collision2D collision) {
    if (collision.gameObject.tag == "Bomb") {
        GetRandomBallValue();
        score =ballValue * 2;
        UpdateScore ();
     }
}