常碰到的几种数据结构:1.Array,2.ArrayList,3.List<T>,4.LinkedList<T>,5.Queue<T>,6.Stack<T>,7.Dictionary<K,T>

在我的DEMO中运用到了List<T>,ArrayList和Dictionary<K,T>,其中展示下我运用字典来存储一个游戏中技能和物品信息的过程

以存放物品信息举例

1.在Assest件下创建一个TXT格式的记事本,存储物品信息,如下图

  1. ,红药,HealthPotion,Drug,,,
  2. ,蓝药,ManaPotion,Drug,,,
  3. ,红蓝恢复,CrystallineFlask,Drug,,,
  4. ,蛋帽,,Equip,,,,Head,
  5. ,沃格勒特的巫师帽,Wooglet's Witchcap,Equip,30,30,0,Head,300
  6. ,灭世者之帽,Rabadon's Deathcap,Equip,60,60,0,Head,600
  7. ,长剑,Long Sword,Equip,,,,RightHand,
  8. ,暴风大剑,B.F.Sword,Equip,,,,RightHand,
  9. ,魔宗利刃,Manamune,Equip,,,,RightHand,
  10. ,无尽之刃,Infinity Edge,Equip,,,,RightHand,
  11. ,多兰盾,Doran's Shield,Equip,0,10,0,LeftHand,100
  12. ,冰霜之心,Glacial Shroud,Equip,,,,LeftHand,
  13. ,兰兆之盾,Randuin's Omen,Equip,0,60,0,LeftHand,800
  14. ,布甲,Cloth Armor,Equip,,,,Armor,
  15. ,守望者铠甲,Warden's Mail,Equip,0,30,0,Armor,300
  16. ,钢铁烈焰之匣,Locket of the Iron Solari,Equip,,,,Armor,
  17. ,贤者之石,Philosopher's Stone,Equip,5,5,5,Common,150
  18. ,水银饰带,Quicksilver Sash,Equip,,,,Common,
  19. ,女妖面纱,Banshee's Veil,Equip,15,15,15,Common,600
  20. ,草鞋,Boots of Speed,Equip,,,,Shoe,
  21. ,布甲鞋,Ninja Tabi,Equip,,,,Shoe,
  22. ,家园卫士,Ninja Homeguard,Equip,,,,Shoe,

2.以上文本对应属性如下信息

3.具体存储信息脚本

  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;//新增Collections.Generic这个命名空间
  4.  
  5. public class ObjectsInfo : MonoBehaviour {
  6. public TextAsset objectInfoText;//把TXT文本放进来
  7. public Dictionary<int,ObjectInfo> ObjectInfoDic = new Dictionary<int,ObjectInfo > ();
  8. public static ObjectsInfo _instance;//做成单例模式,方便其他脚本的引用
  9. void Awake () {
  10. _instance = this;
  11. readInfo ();//初始化读取内部数据信息
  12. }
  13. void readInfo(){
  14. string text = objectInfoText.text;
  15. //用string语法中的.Split方法来分本记事本的字符串
  16. string[] StrArray=text.Split('\n');
  17. foreach (string array in StrArray) {
  18. string[] arr=array.Split(',');
  19. ObjectInfo info = new ObjectInfo ();
  20. info.id=int.Parse(arr[]);
  21. info.name=arr[];
  22. info.icon_name=arr[];
  23. ObjectType type=ObjectType.Drug;
  24. string kind=arr[];
    //用switch语法来创建类型
  25. switch(kind){
  26. case "Drug":
  27. type=ObjectType.Drug;
  28. break;
  29. case "Equip":
  30. type=ObjectType.Equip;
  31. break;
  32. }
    //根据类型在字典中存储相关数据
  33. info.type=type;
  34. if(type==ObjectType.Drug){
  35. info.hp=int.Parse( arr[]);
  36. info.mp=int.Parse(arr[]);
  37. info.price=int.Parse(arr[]);
  38. }
  39. else if(type==ObjectType.Equip){
  40. info.attack=int.Parse(arr[]);
  41. info.defence=int.Parse(arr[]);
  42. info.speed=int.Parse(arr[]);
  43. string str=arr[];
  44. switch(str){
  45. case "Head":
  46. info.dressType=DressType.Head;
  47. break;
  48. case "RightHand":
  49. info.dressType=DressType.RightHand;
  50. break;
  51. case "LeftHand":
  52. info.dressType=DressType.LeftHand;
  53. break;
  54. case "Armor":
  55. info.dressType=DressType.Armor;
  56. break;
  57. case "Common":
  58. info.dressType=DressType.Common;
  59. break;
  60. case "Shoe":
  61. info.dressType=DressType.Shoe;
  62. break;
  63. }
  64. info.price=int.Parse(arr[]);
  65. }
  66.  
  67. ObjectInfoDic.Add(info.id,info);//切记最后添加这个语句存入数据
  68.  
  69. }
  70. }
  71. //根据ID查找到对应的相关信息
  72. public ObjectInfo GetInfoByID(int id){
  73. ObjectInfo info = null;
  74. ObjectInfoDic.TryGetValue (id, out info);
  75. return info;
  76. }
  77.  
  78. }
  79. //两种物品类型,一种药品,一种装备
  80. public enum ObjectType{
  81. Drug,
  82. Equip
  83. }
  84. //装备的穿戴类型有五种
  85. public enum DressType{
  86. Head,
  87. RightHand,
  88. LeftHand,
  89. Armor,
  90. Common,
  91. Shoe
  92. }
  93. 93 //新建一个类,用来存放物品信息,包括编号,物品名字,物品图标名字,物品类型(药品,装备,加血,加蓝,购买价钱
  94. public class ObjectInfo{
  95. public int id;
  96. public string name;
  97. public string icon_name;
  98. public ObjectType type;
  99. public int hp;
  100. public int mp;
  101. public int price;
  102.  
  103. 103 //装备类型,新增一个穿戴部位类型,攻击力,防御力和速度
  104. public DressType dressType;
  105. public int attack;
  106. public int defence;
  107. public int speed;
  108. }

unity学习中经常要碰到的几种数据结构的更多相关文章

  1. [译]如何在Unity编辑器中添加你自己的工具

    在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作 ...

  2. MVVM框架在unity开发中的使用

    1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...

  3. Unity优化方向——优化Unity游戏中的垃圾回收(译)

    介绍 当我们的游戏运行时,它使用内存来存储数据.当不再需要该数据时,存储该数据的内存将被释放,以便可以重用.垃圾是用来存储数据但不再使用的内存的术语.垃圾回收是该内存再次可用以进行重用的进程的名称. ...

  4. Unity优化方向——优化Unity游戏中的图形渲染(译)

    CPU bound:CPU性能边界,是指CPU计算时一直处于占用率很高的情况. GPU bound:GPU性能边界,同样的是指GPU计算时一直处于占用率很高的情况. 原文:https://unity3 ...

  5. Unity优化方向——优化Unity游戏中的脚本(译)

    原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity ...

  6. 微软企业库Unity学习笔记

    本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...

  7. Unity学习(十三)场景优化之四叉树

    http://blog.sina.com.cn/s/blog_89d90b7c0102wyfw.html 四叉树是在二维图片中定位像素的唯一适合的算法.因为二维空间(图经常被描述的方式)中,平面像素可 ...

  8. 2019年Unity学习资源指南[精心整理]

    前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的 ...

  9. 模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用

    模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 lqfarmer 深度学习研究员.欢迎扫描头像二维码,获取更多精彩内容. 946 人赞同了该文章 Atte ...

随机推荐

  1. java 成员访问修饰符

    作用域 当前类 当前包(package) 子类 其他包(package) public ok ok ok ok protected ok ok ok no default ok ok no no pr ...

  2. linux基础命令整理

    1  显示当前工作目录                pwd 2  查看目录下的所有内容          ls        ls   -l   以列方式查看        ls  -a  显示所有 ...

  3. MYSQL事务和锁

    mysql事务(一)—转载 2012年12月20日 ⁄ Mysql数据库, 技术交流 ⁄ 暂无评论 一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割 ...

  4. python 10 min系列三之小爬虫(一)

    python10min系列之小爬虫 前一篇可视化大家表示有点难,写点简单的把,比如命令行里看论坛的十大,大家也可以扩展为抓博客园的首页文章 本文原创,同步发布在我的github上 据说去github右 ...

  5. 10min系列之二日志可视化进阶

    10min系列之二日志可视化进阶(作者原创,同步发布在github) 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 本文所有的demo,都是浏览器下展示的 原创 ...

  6. java学习之jdbc的封装

    jdbc是连接数据库必不可少的工具,但每次连接都要重新写一遍太麻烦了,也不利于代码的可读性,这里做一个工具类进行封装. package com.gh; import java.sql.Connecti ...

  7. GTW likes math(简单数学)

    GTW likes math  Accepts: 472  Submissions: 2140  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...

  8. HDU 4705 Y

    Y Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submis ...

  9. 微软正式公布Visual Studio 2013 Update 3 (2013.3) RTM

     昨天微软的Visual Studio 2013 Update 3(Visual Studio 2013.3)正式公布(RTM)了,做为微软认证金牌合作的葡萄城控件,我们组织力量第一时间进行翻译. ...

  10. iOS系统原生二维码条形码扫描

    本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的 ...