当前位置: 首页 > news >正文

介绍Unity中的Dictionary

在 Unity(C#)中,Dictionary 是一个非常常用的数据结构,它提供 键值对(Key-Value Pair) 的存储方式。类似于 Python 的 dict 或 JavaScript 的对象(Object),但它是强类型的、使用泛型。


基础概念:什么是 Dictionary?

C# 中的 Dictionary<TKey, TValue> 是一个泛型集合,你可以根据某个键(Key)快速查找、添加或删除对应的值(Value)。

适合用在什么时候?

  • 需要快速查找(复杂度约为 O(1))

  • 想通过“某个唯一标识”存储对应数据,如:

    • ID → 玩家对象
    • 名字 → 数值
    • 类型 → Prefab

常用语法

1. 声明 Dictionary

Dictionary<string, int> scoreDict = new Dictionary<string, int>();

2. 添加数据

scoreDict.Add("Player1", 100);

3. 读取数据

int score = scoreDict["Player1"];

4. 修改数据

scoreDict["Player1"] = 200;

5. 判断是否包含某个键

if (scoreDict.ContainsKey("Player1")) {Debug.Log("存在 Player1");
}

6. 遍历 Dictionary

foreach (KeyValuePair<string, int> entry in scoreDict)
{Debug.Log(entry.Key + ": " + entry.Value);
}

7. 删除键值对

scoreDict.Remove("Player1");

Unity 实战场景示例

示例:根据字符串名字加载预制体

public class PrefabManager : MonoBehaviour
{public GameObject redGem;public GameObject blueGem;private Dictionary<string, GameObject> prefabDict;void Start(){prefabDict = new Dictionary<string, GameObject>();prefabDict.Add("Red", redGem);prefabDict.Add("Blue", blueGem);GameObject gem = Instantiate(prefabDict["Red"], new Vector2(0, 0, 0), Quaternion.identity);}
}

⚠️ 注意事项

  1. 键(Key)不能重复,否则会抛异常。
  2. 如果你不确定键是否存在,请用 .ContainsKey().TryGetValue()
  3. Dictionary 是无序的。如果你需要有序,可以用 SortedDictionaryList<KeyValuePair<>>

相关文章:

  • 【RAG技术全景解读】从原理到工业级应用实践
  • 树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
  • Mockoon 使用教程
  • 解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)
  • 垃圾厌氧堆肥发酵实验台试验装置
  • 直接用字符串方式 split(“。“) 来切句,虽然能把句子拆开,但无法和 BERT 模型的 token 位置对应(embedding 用不上)
  • 两种方法求解最长公共子序列问题并输出所有解
  • Android学习总结之算法篇八(二叉树和数组)
  • 可视化图解算法35:在二叉树中找到两个节点的最近公共祖先(二叉树的最近公共祖先)
  • 【LeetCode】删除排序数组中的重复项 II
  • 2025年渗透测试面试题总结-某步在线面试(题目+回答)
  • 开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!
  • ZooKeeper工作机制与应用场景
  • 邻近标记技术:研究蛋白互作的利器(五)
  • base64与图片的转换和预览(高阶玩法)
  • 守护数字家园:个人博客安全防护指南
  • 云服务如何简化物联网设备生命周期(How Cloud Services Simplify IoT Device Lifecycles)?
  • 【Linux修炼手册】Linux开发工具的使用(一):yum与vim
  • 数据清洗(ETL/ELT)原理与工具选择指南:企业数字化转型的核心引擎
  • DevExpressWinForms-布局之SplitContainerControl
  • 复旦发文缅怀文科杰出教授裘锡圭:曾提出治学需具备三种精神
  • 新华每日电讯:给“男性妇科病论文”开一剂复方药
  • 梅花奖在上海|第六代“杨子荣”是怎样炼成的?
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段
  • 8小时《大师与玛格丽特》:长度可以是特点,但不是价值标准
  • 金融监管总局将推出8项增量政策:涉房地产金融、险资入市、稳外贸等