【ハルシオンブログ】「A~Cからランダムで取得」的なやつを重みづけでランダム取得してますよ。これより簡単な方法ってありますか?
こんにちは!坂内っす。
もう12月も半分終わりですね・・・・あぁ~ 年末なっちゃうわー!
そういえば、年末ジャンボ宝くじまだ買ってないんですよね・・・・
買わないとなぁ
さて、Unityの話。
今まで「A~Cのどれかをランダムで選択」というときには、
って感じでやるといいらしいっすよ。
ほかにももっと簡単なやり方があったら教えてほしいっすけどね!
ってことで、今日は「いくつかのアイテムにウエイトを付けて、取得する方法」についてでした。
では、あでゅ~ノシ
もう12月も半分終わりですね・・・・あぁ~ 年末なっちゃうわー!
そういえば、年末ジャンボ宝くじまだ買ってないんですよね・・・・
買わないとなぁ
さて、Unityの話。
今まで「A~Cのどれかをランダムで選択」というときには、
public class Item{
public int weight;
public string itemName;
}
List<Item> items = new List<Item>();
Item item1 = new Item();
item1.weight = 2;
item1.itemName = "A";
items.Add(item1);
Item item2 = new Item();
item2.weight = 6;
item2.itemName = "B";
items.Add(item2);
Item item3 = new Item();
item3.weight = 2;
item3.itemName = "C";
items.Add(item3);
// どれかを選択
public string GetRandomItemName(){
string retItemName = "";
int total = 0;
foreach(Item item in items){
total += item.weight;
}
int value = Random.Range(0, total + 1);
for(int i = 0; i < items.Count; i++){
if(value < items[i].weight){
retItemName = items[i].itemName;
break;
}else{
value -= items[i].weight;
}
}
return retItemName;
}
って感じでやるといいらしいっすよ。
ほかにももっと簡単なやり方があったら教えてほしいっすけどね!
ってことで、今日は「いくつかのアイテムにウエイトを付けて、取得する方法」についてでした。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】クラス名とかメソッド名とかをログに出すときは「nameOf 演算子」が便利 | 【ハルシオンブログ】Animatorでアニメーション管理しているときに終了を待ったりスキップしたりしたかった »
コメント
| h o m e |