FC2ブログ
01 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.» 03

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】「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)

tb 0 : cm 0   

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://halcyonsystemblog.jp/tb.php/660-d622715b
この記事にトラックバックする(FC2ブログユーザー)