如何显示项目给定百分比? Unity C#

时间:2016-11-09 10:30:17

标签: c# unity3d

我在使用C#统一编写游戏脚本时遇到了问题。 我想获得具有百分比的项目。

例如我下面有一个List<item> Bonus

ITEM |数量| PERCENT

  1. 硬币20 100%
  2. 硬币40 95%
  3. Coin 300 40%
  4. 硬币700 10%
  5. apple 2 60%
  6. 柠檬2 60%
  7. orange 2 60%
  8. Wood 1 90%
  9. wood 2 70%
  10. wood 3 50%
  11. 银条1 4%
  12. 鱼肉2 60%
  13. 看到1 7%
  14. 绳索1 7%
  15. 百分比项目显示出现的机会。

    如何从百分比中获得1项? 怎么在c#?细节是否足够?

    由于

    丹尼斯

1 个答案:

答案 0 :(得分:3)

我理解你的问题的方式是你会:

  • 100%的机会获得20个硬币
  • 加上95%的机会获得40个硬币
  • 加上40%的机会获得300个硬币
  • ...

这样你就必须做这样的事情:

List<items> itemsWon = new List<item>();
float randomPercentage = Random.Range(0.0f, 1.0f);
for(int i = 0; i < Bonus.Count; i++)
{
    if (randomPercentage > Bonus[i].PERCENT)
    {
        itemsWon.Add(Bonus[i]);
    }
}

但考虑到你的意见,我会说你只想赢得其中一项。在这种情况下,你必须给每个项目和 int值(在这种情况下比使用浮动更容易)让我们说你的 PERCENT 属性并做像这样的东西:

items itemWon;
int totalItemsPercent = 0;
for(int i = 0; i < Bonus.Count; i++)
{
    totalItemsPercent += Bonus[i].PERCENT;
}

int percentToReach = Random.Range(0, totalItemsPercent + 1);
int itemsPercentSum = 0;
for(int i = 0; i < Bonus.Count; i++)
{
    itemsPercentSum += Bonus[i].PERCENT;
    if (itemsPercentSum >= percentToReach)
    {
        itemWon = Bonus[i];
        break;
    }
}
希望那些人会帮助你。另外请记住发布已生成的代码总是帮助其他人了解您尝试实现的目标。的问候,