簡體   English   中英

如何跳過 Random.Range 中的值? 在 Unity/C# 中?

[英]How to skip values in Random.Range? In Unity/C#?

面臨為非拉丁腳本隨機化 randomLetter 的問題。 在我的腳本中,在 unicode 字符表中,不存在 4 個 unicode 值。 在 Random.Range() 運行時需要跳過這些字符。 解決方法是什么? 聲明一個數組? 或聲明一個清單? 或者是其他東西? 請幫忙。 拉丁文字的工作代碼:

{
private void OnEnable()
    {
        var i = UnityEngine.Random.Range(0, 26);
_randomLetter = (char) ('a' + i);

        GetComponent<TMP_Text>().text = _randomLetter.ToString();
    }

孟加拉語腳本代碼:

private void OnEnable()
    {
        var i = UnityEngine.Random.Range(0, 16);  //12 vowels in bengali but here 16 as range including non-existent values

        _randomLetter = (char) ('অ' + i);

        GetComponent<TMP_Text>().text = _randomLetter.ToString();

    }

最簡單的方法是構建所有允許字符的列表,並在該列表中生成一個隨機索引。 請注意,字符串可以像字符列表一樣使用。

const string allowedCharacters = "abe";
var randomIndex = UnityEngine.Random.Range(0,allowedCharacters.Length);
var randomCharacter = allowedCharacters[randomIndex];

另一種簡單的方法是使用拒絕抽樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM