Unity - 处理多个数组并理解循环

Posted

技术标签:

【中文标题】Unity - 处理多个数组并理解循环【英文标题】:Unity - Dealing with multiple arrays and understanding loops 【发布时间】:2020-10-30 19:20:42 【问题描述】:

所以我很难理解多个数组和循环是如何工作的。例如,在一个游戏中,您拥有交易功能并创建了这样的方法:

public void TradeItems(string[] giveItemKey, int[] giveAmount, string[] takeItemKey, int[] takeAmount)



您可以调用该方法以用更少的物品换取更多物品,反之亦然。例如,你给 3 双匕首和 4 靴子换 2 护甲。

TradeItems(new string[]  "Double Dagger", "Boots" , new int[]  3,4, new string[] "Armor" , new int[] 2 );

那么基于那个方法,你会怎么做呢?会是这样吗?

public void TradeItems(string[] giveItemKey, int[] giveAmount, string[] takeItemKey, int[] takeAmount)

  if (HasItemsToTrade())
    
        for (int i = 0; i < giveItemKey.Length; i++)
        
            RemoveItems(giveItemKey[i], giveAmount[i]);
        
        for (int i = 0; i < takeItemKey.Length; i++)
        
            AddItems(takeItemKey[i], takeAmount[i]);
        
    
    else
    
        Debug.Log("You don't have required items to trade");
    


还要注意 giveItemKey 数组和 takeItemKey 数组可以有相等或不等的长度等。

感谢我能获得的有关这些方面的任何帮助和知识。

【问题讨论】:

您是否正在为void TradeItems() 函数找到更好的解决方案? 是的,可能是一个更干净或更简单的结构 【参考方案1】:

一般来说,我宁愿使用Dictionary,而不是最终大小匹配的两个单独的项目集合..

public void TradeItems(Dictionary<string, int> give, Dictionary<string int> take)

    if (HasItemsToTrade(give))
    
        foreach(var givePair in give) 
        
            RemoveItems(givePair.Key, givePair.Value);
        

        foreach(var takePair in take)
        
            AddItems(takePair.Key, takePair.Value);
        
    
    else
    
        Debug.Log("You don't have required items to trade");
    

所以您的HasItmesToTrade 可能会遍历give 中的条目并检查它们是否在您的库存中,例如

private bool HasItemsToTrade(Dictionary<string, int> give)

    foreach(var kvp in give)
    
        if(!inventory.ContainsKey(kvp.Key)) return false;

        if(inventory[kvp.Key] < kvp.Value) return false;
    

    return true;

所以你宁愿这样称呼它

TradeItems(new Dictionary<string, int>  "Double Dagger", 3, "Boots", 4 , new Dictionary<string, int> "Armor", 2  );

【讨论】:

肯定更简洁的代码。看看它是否适用于我的 scriptableobject 项目

以上是关于Unity - 处理多个数组并理解循环的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎样输入多组数据 每组数据个数不确定 每组数据占一行

awk----利用循环统计个数

react循环多个按钮,这个按钮如何点击一次,将值放在一个数

循环遍历python数组以匹配第二个数组中的多个条件,快速方法?

jQuery循环遍历多维数组并显示每个父数组的子数组

jsp循环list list包含map map包含2个数组,可以理解成多个问题 多个选项显示出来(html5显示优先)