![](/img/trans.png)
[英]How do I generate a Random.Range value once, and then use it in void Update to move? 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.