将一个变量的值设置为另一个变量的值

时间:2019-02-19 01:51:10

标签: unity3d syntax

我将举例说明我要完成的事情。

使用twine2(我从那里开始),可以通过直接引用其他变量来编程设置和操作变量(我将为不熟悉twine的任何人解释一下语法)。

初始化并设置我的变量

  // data map is equivalent to dict
$Inv = (dm: potion, 0, bomb, 0, gold, 0);
  // array
$PossibleRewards =(a: potion, bomb, gold);
  // string
$Reward "";

然后

set $Reward to (shuffled... $PossibleReward's 1st);
set $Inv's $Reward to it +1;

因此,它要做的只是简单地洗刷可能的奖赏数组,选择第一个条目,然后将奖赏字符串设置为所选的内容,然后自动将Inv数据映射适当的条目增加一个。

当然,您可以跳过字符串而只是

set $Inv's (shuffled... $PossibleReward's 1st to ot +1

我知道这是可以做到的,但是需要一些语法方面的帮助,任何输入都值得赞赏

2 个答案:

答案 0 :(得分:0)

这是一篇有关用C#:Best way to randomize an array with .NET改组数组的文章。答案中有几个选项。

假设您有一个Dictionary<string, int>用于库存(已经填充了所有可能的奖励),则只需将其分配为inventory[possibleRewards[0]] += 1inventory[possibleRewards[0]]++

但是,我不会每次都对数组进行洗牌。我会生成一个随机数,然后使用它来选择数组中的索引,例如

var rand = new Random(); // do this once, e.g. in startup
// initialize possibleRewards array 

// in your reward method
var index = rand.Next(numberOfRewards);
inventory[possibleRewards[index]] += 1;

如果Twine2是到目前为止您唯一的编程知识,我建议您花点时间投入入门C#教程。

答案 1 :(得分:0)

如果PossibleRewards只是Dictionary.Keys值的重复,那么您可能不需要它。您可以使用Random类,使用字典的ElementAt方法(返回KeyValuePair)来在字典中获取随机项,将Reward设置为{{1 }},然后可以在字典中增加该元素的Value

Value

否则,如果需要该列表(例如,如果Random rnd = new Random(); // Note: you typically only need one instance of Random in a class // Create a dictionary of rewards and quantity Dictionary<string, int> inventory = new Dictionary<string, int> {{"potion", 0}, {"bomb", 0}, {"gold", 0}}; // Grab the Key of a random item in the dictionary for the reward string reward = inventory.ElementAt(rnd.Next(inventory.Count)).Key; // Increment the value at that Key inventory[reward]++; 是不同类的实例之间的共享列表),则可以基于该列表初始化单个清单字典。最简单的方法是使用Rewards扩展方法ToDictionary

System.Linq