FC2ブログ
    05 «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.30.» 07

    ハルシオンシステムの気まま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ブログユーザー)