unity学习中经常要碰到的几种数据结构
常碰到的几种数据结构: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格式的记事本,存储物品信息,如下图
- ,红药,HealthPotion,Drug,,,
- ,蓝药,ManaPotion,Drug,,,
- ,红蓝恢复,CrystallineFlask,Drug,,,
- ,蛋帽,,Equip,,,,Head,
- ,沃格勒特的巫师帽,Wooglet's Witchcap,Equip,30,30,0,Head,300
- ,灭世者之帽,Rabadon's Deathcap,Equip,60,60,0,Head,600
- ,长剑,Long Sword,Equip,,,,RightHand,
- ,暴风大剑,B.F.Sword,Equip,,,,RightHand,
- ,魔宗利刃,Manamune,Equip,,,,RightHand,
- ,无尽之刃,Infinity Edge,Equip,,,,RightHand,
- ,多兰盾,Doran's Shield,Equip,0,10,0,LeftHand,100
- ,冰霜之心,Glacial Shroud,Equip,,,,LeftHand,
- ,兰兆之盾,Randuin's Omen,Equip,0,60,0,LeftHand,800
- ,布甲,Cloth Armor,Equip,,,,Armor,
- ,守望者铠甲,Warden's Mail,Equip,0,30,0,Armor,300
- ,钢铁烈焰之匣,Locket of the Iron Solari,Equip,,,,Armor,
- ,贤者之石,Philosopher's Stone,Equip,5,5,5,Common,150
- ,水银饰带,Quicksilver Sash,Equip,,,,Common,
- ,女妖面纱,Banshee's Veil,Equip,15,15,15,Common,600
- ,草鞋,Boots of Speed,Equip,,,,Shoe,
- ,布甲鞋,Ninja Tabi,Equip,,,,Shoe,
- ,家园卫士,Ninja Homeguard,Equip,,,,Shoe,
2.以上文本对应属性如下信息
3.具体存储信息脚本
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;//新增Collections.Generic这个命名空间
- public class ObjectsInfo : MonoBehaviour {
- public TextAsset objectInfoText;//把TXT文本放进来
- public Dictionary<int,ObjectInfo> ObjectInfoDic = new Dictionary<int,ObjectInfo > ();
- public static ObjectsInfo _instance;//做成单例模式,方便其他脚本的引用
- void Awake () {
- _instance = this;
- readInfo ();//初始化读取内部数据信息
- }
- void readInfo(){
- string text = objectInfoText.text;
- //用string语法中的.Split方法来分本记事本的字符串
- string[] StrArray=text.Split('\n');
- foreach (string array in StrArray) {
- string[] arr=array.Split(',');
- ObjectInfo info = new ObjectInfo ();
- info.id=int.Parse(arr[]);
- info.name=arr[];
- info.icon_name=arr[];
- ObjectType type=ObjectType.Drug;
- string kind=arr[];
//用switch语法来创建类型- switch(kind){
- case "Drug":
- type=ObjectType.Drug;
- break;
- case "Equip":
- type=ObjectType.Equip;
- break;
- }
//根据类型在字典中存储相关数据- info.type=type;
- if(type==ObjectType.Drug){
- info.hp=int.Parse( arr[]);
- info.mp=int.Parse(arr[]);
- info.price=int.Parse(arr[]);
- }
- else if(type==ObjectType.Equip){
- info.attack=int.Parse(arr[]);
- info.defence=int.Parse(arr[]);
- info.speed=int.Parse(arr[]);
- string str=arr[];
- switch(str){
- case "Head":
- info.dressType=DressType.Head;
- break;
- case "RightHand":
- info.dressType=DressType.RightHand;
- break;
- case "LeftHand":
- info.dressType=DressType.LeftHand;
- break;
- case "Armor":
- info.dressType=DressType.Armor;
- break;
- case "Common":
- info.dressType=DressType.Common;
- break;
- case "Shoe":
- info.dressType=DressType.Shoe;
- break;
- }
- info.price=int.Parse(arr[]);
- }
- ObjectInfoDic.Add(info.id,info);//切记最后添加这个语句存入数据
- }
- }
- //根据ID查找到对应的相关信息
- public ObjectInfo GetInfoByID(int id){
- ObjectInfo info = null;
- ObjectInfoDic.TryGetValue (id, out info);
- return info;
- }
- }
- //两种物品类型,一种药品,一种装备
- public enum ObjectType{
- Drug,
- Equip
- }
- //装备的穿戴类型有五种
- public enum DressType{
- Head,
- RightHand,
- LeftHand,
- Armor,
- Common,
- Shoe
- }
- 93 //新建一个类,用来存放物品信息,包括编号,物品名字,物品图标名字,物品类型(药品,装备,加血,加蓝,购买价钱
- public class ObjectInfo{
- public int id;
- public string name;
- public string icon_name;
- public ObjectType type;
- public int hp;
- public int mp;
- public int price;
- 103 //装备类型,新增一个穿戴部位类型,攻击力,防御力和速度
- public DressType dressType;
- public int attack;
- public int defence;
- public int speed;
- }
unity学习中经常要碰到的几种数据结构的更多相关文章
- [译]如何在Unity编辑器中添加你自己的工具
在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作 ...
- MVVM框架在unity开发中的使用
1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...
- Unity优化方向——优化Unity游戏中的垃圾回收(译)
介绍 当我们的游戏运行时,它使用内存来存储数据.当不再需要该数据时,存储该数据的内存将被释放,以便可以重用.垃圾是用来存储数据但不再使用的内存的术语.垃圾回收是该内存再次可用以进行重用的进程的名称. ...
- Unity优化方向——优化Unity游戏中的图形渲染(译)
CPU bound:CPU性能边界,是指CPU计算时一直处于占用率很高的情况. GPU bound:GPU性能边界,同样的是指GPU计算时一直处于占用率很高的情况. 原文:https://unity3 ...
- Unity优化方向——优化Unity游戏中的脚本(译)
原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity ...
- 微软企业库Unity学习笔记
本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...
- Unity学习(十三)场景优化之四叉树
http://blog.sina.com.cn/s/blog_89d90b7c0102wyfw.html 四叉树是在二维图片中定位像素的唯一适合的算法.因为二维空间(图经常被描述的方式)中,平面像素可 ...
- 2019年Unity学习资源指南[精心整理]
前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的 ...
- 模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用
模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理.分类及应用 lqfarmer 深度学习研究员.欢迎扫描头像二维码,获取更多精彩内容. 946 人赞同了该文章 Atte ...
随机推荐
- java 成员访问修饰符
作用域 当前类 当前包(package) 子类 其他包(package) public ok ok ok ok protected ok ok ok no default ok ok no no pr ...
- linux基础命令整理
1 显示当前工作目录 pwd 2 查看目录下的所有内容 ls ls -l 以列方式查看 ls -a 显示所有 ...
- MYSQL事务和锁
mysql事务(一)—转载 2012年12月20日 ⁄ Mysql数据库, 技术交流 ⁄ 暂无评论 一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割 ...
- python 10 min系列三之小爬虫(一)
python10min系列之小爬虫 前一篇可视化大家表示有点难,写点简单的把,比如命令行里看论坛的十大,大家也可以扩展为抓博客园的首页文章 本文原创,同步发布在我的github上 据说去github右 ...
- 10min系列之二日志可视化进阶
10min系列之二日志可视化进阶(作者原创,同步发布在github) 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 本文所有的demo,都是浏览器下展示的 原创 ...
- java学习之jdbc的封装
jdbc是连接数据库必不可少的工具,但每次连接都要重新写一遍太麻烦了,也不利于代码的可读性,这里做一个工具类进行封装. package com.gh; import java.sql.Connecti ...
- GTW likes math(简单数学)
GTW likes math Accepts: 472 Submissions: 2140 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- HDU 4705 Y
Y Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submis ...
- 微软正式公布Visual Studio 2013 Update 3 (2013.3) RTM
昨天微软的Visual Studio 2013 Update 3(Visual Studio 2013.3)正式公布(RTM)了,做为微软认证金牌合作的葡萄城控件,我们组织力量第一时间进行翻译. ...
- iOS系统原生二维码条形码扫描
本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的 ...