位置: 编程技术 - 正文

Unity3D中常用的数据结构总结与分析(unity3d常用代码总结)

编辑:rootadmin

推荐整理分享Unity3D中常用的数据结构总结与分析(unity3d常用代码总结),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d总结,unity3d基本功能,unity3d常用代码总结,unity3d里面有哪些常用组件,unity3d里面有哪些常用组件,unity3d总结,unity3d用途,unity3d里面有哪些常用组件,内容如对您有帮助,希望把文章链接给更多的朋友!

今天来给大家介绍U3D时经常用到的数据结构和各种数据结构的应用场景吧。

1.几种常见的数据结构

 这里主要总结下小匹夫在工作中常碰到的几种数据结构:Array,ArrayList,List<T>,LinkedList<T>,Queue<T>,Stack<T>,Dictionary<K,T>

 数组Array:

  数组是最简单的数据结构。其具有如下特点:

数组存储在连续的内存上。 数组的内容都是相同类型。 数组可以直接通过下标访问。

  数组Array的创建:

创建一个新的数组时将在 CLR 托管堆中分配一块连续的内存空间,来盛放数量为size,类型为所声明类型的数组元素。如果类型为&#;类型,则将会有size个未装箱的该类型的&#;被创建。如果类型为引用类型,则将会有size个相应类型的引用被创建。

由于是在连续内存上存储的,所以它的索引速度非常快,访问一个元素的时间是恒定的也就是说与数组的元素数量无关,而且赋&#;与修改元素也很简单。

但是有优点,那么就一定会伴随着缺点。由于是连续存储,所以在两个元素之间插入新的元素就变得不方便。而且就像上面的代码所显示的那样,声明一个新的数组时,必须指定其长度,这就会存在一个潜在的问题,那就是当我们声明的长度过长时,显然会浪费内存,当我们声明长度过短的时候,则面临这溢出的风险。这就使得写代码像是投机,小匹夫很厌恶这样的行为!针对这种缺点,下面隆重推出ArrayList。

Unity3D中常用的数据结构总结与分析(unity3d常用代码总结)

 ArrayList:

为了解决数组创建时必须指定长度以及只能存放相同类型的缺点而推出的数据结构。ArrayList是System.Collections命名空间下的一部分,所以若要使用则必须引入System.Collections。正如上文所说,ArrayList解决了数组的一些缺点。

不必在声明ArrayList时指定它的长度,这是由于ArrayList对象的长度是按照其中存储的数据来动态增长与缩减的。 ArrayList可以存储不同类型的元素。这是由于ArrayList会把它的元素都当做Object来处理。因而,加入不同类型的元素是允许的。

ArrayList的操作:

说了那么一堆”优点“,也该说说缺点了吧。为什么要给”优点”打上引号呢?那是因为ArrayList可以存储不同类型数据的原因是由于把所有的类型都当做Object来做处理,也就是说ArrayList的元素其实都是Object类型的,辣么问题就来了。

ArrayList不是类型安全的。因为把不同的类型都当做Object来做处理,很有可能会在使用ArrayList时发生类型不匹配的情况。 如上文所诉,数组存储&#;类型时并未发生装箱,但是ArrayList由于把所有类型都当做了Object,所以不可避免的当插入&#;类型时会发生装箱操作,在索引取&#;时会发生拆箱操作。这能忍吗?

注:为何说频繁的没有必要的装箱和拆箱不能忍呢?且听小匹夫慢慢道来:所谓装箱 (boxing):就是&#;类型实例到对象的转换(百度百科)。那么拆箱:就是将引用类型转换为&#;类型咯(还是来自百度百科)。下面举个例子~

那么结论呢?好吧,请允许小匹夫很low再次引用百度百科。显然,从原理上可以看出,装箱时,生成的是全新的引用对象,这会有时间损耗,也就是造成效率降低。

List<T>泛型List

为了解决ArrayList不安全类型与装箱拆箱的缺点,所以出现了泛型的概念,作为一种新的数组类型引入。也是工作中经常用到的数组类型。和ArrayList很相&#;,长度都可以灵活的改变,最大的不同在于在声明List集合时,我们同时需要为其声明List集合内数据的对象类型,这点又和Array很相&#;,其实List<T>内部使用了Array来实现。

这么做最大的好处就是

即确保了类型安全。 也取消了装箱和拆箱的操作。 它融合了Array可以快速访问的优点以及ArrayList长度可以灵活变化的优点。

  

也论Flash 3D和Unity 3D的未来 可以说,自从年开始接触Flash以来,我就一直期望有一天能在Flash里面自由地运用3D模型,原因是当时我在上海交大同时学习Flash4和Maya3。多少年后,两个

那些不易注意到的UNITY实用小功能 Unity是一款十分易用的游戏引擎,上手并不困难——恐怕也正因如此,少有人会仔细阅读帮助文档对Unity编辑器的功能做一个全面细致的了解,而一些非

新手数值学习心得 - 归纳,总结,疑问! 一、伤害判定逻辑与平均伤害伤害判定逻辑是游戏如何确定玩家某一行为的结果的计算,举个例子,玩家操作角色攻击怪物,是出现未命中、闪避、暴

标签: unity3d常用代码总结

本文链接地址:https://www.jiuchutong.com/biancheng/372969.html 转载请保留说明!

上一篇:C#抽象类及其方法的学习(c#中抽象类的定义)

下一篇:也论Flash 3D和Unity 3D的未来(flash 3 utility)

  • 多交的增值税和附加税退回,如何记账
  • 2021年销售农机免增值税吗
  • 调试费含税吗
  • 非房地产企业销售不动产增值税计算
  • 职工福利费会计核算
  • 物流运输企业增值税税负
  • 个体户对公账户怎么办理
  • 外资企业的分支机构向总机构支付的管理费如何办理税前列支申请
  • 租金和押金的税率
  • 去年发生的成本但今年9月份才开票付款
  • 客户退款已发生的业务
  • 预缴增值税转入流程
  • 股权稀释需要交税吗
  • 商贸公司结转成本应该贴什么凭证
  • 员工借款可以直接转账吗
  • 预付材料款的会计分录怎么写
  • 律师事务所日常管理松懈混乱整改措施
  • 汽修厂纳税多少
  • 收到发票,未付款,付款的时候需要把发票复印做附件吗
  • 参加国外展会费用
  • 基建拨款账务处理
  • 无偿划转房产能否入递延收益
  • 小规模纳税人一个月能开多少税票
  • 汽车加油票可以开专票吗
  • 法人垫付现金的原始凭证
  • 建筑行业会计成本会计工作流程
  • 笔记本怎么清理D盘
  • 电脑管家怎么检测
  • 苹果屏幕刷新率120hz的机型
  • 如何更换电脑开机动画
  • osXYosemite怎么更新
  • 在win7中如何设置屏幕保护程序
  • 天猫魔搭
  • kwservice.exe是什么
  • 外地企业预缴税款流程
  • 企业亏损注销税务会不会来查账
  • 印花税土地使用税和房产税怎么做会计分录
  • 固定资产残值率怎么计算
  • thinkphp ide
  • 电子发票记账清单入账
  • thinkphp 部署
  • 爱丽丝小镇在哪
  • 时间格式转换成小时数
  • 个人所得税纳税记录怎么查询
  • 固定资产清理是什么意思
  • 应收账款计提坏账准备是什么意思
  • python np数组
  • 从农业生产者购进农产品
  • 关联债资比例是什么意思
  • 报账单大写金额负数填写方式
  • 代理服务费如何缴纳
  • 应付账款借方余额负数表示什么
  • 交城市维护建设税减半征收吗?
  • 长期待摊费用科目怎么使用
  • 预付账款在何时可以转出
  • 安全生产费的使用包括
  • 往来款多了会怎么样
  • 资金账簿减半征收印花税
  • 预付账款属于资产类科目
  • 坏账准备纳税调增吗
  • 建账前应考虑什么问题
  • mysql 连续日期
  • 硬盘uefi启动安装系统
  • 系统盘如何重装
  • ubuntu linux
  • 电脑xp系统如何
  • Linux Mint 5 XFCE Community Edition RC1 (BETA 025) 本月17日开始发布
  • 2015.3.25--2.cocos精灵移动 动画控制(一)
  • Coroutine couldn't be started because the the game object 'GameController' is inactive!
  • android中数据存储
  • git 常用指令
  • angularjs定义全局变量
  • python中按下某个按键
  • jquery动态添加html代码
  • Android ExpandableListView的使用技巧
  • 怎么打印纳税申报表带章的
  • 车辆购置税需要每年都交吗
  • 福建省电子税务局操作指南
  • 北京朝阳税务局办税大厅
  • 襄城是现在的哪个城市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设