数组(Arrays)和列表(Lists) — Unity C#

这篇具有很好参考价值的文章主要介绍了数组(Arrays)和列表(Lists) — Unity C#。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数组(Arrays)和列表(Lists) — Unity C#

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏

数组

数组是 C# 提供的最基本的集合。将它们视为一组值的容器,在编程术语中称为元素,每个值都可以单独访问或修改。
· 数组可以存储任何类型的值;所有元素必须属于同一类型。
· 数组的长度或元素数量是在创建时设置的。
· 如果创建时没有指定初始值,则每个元素都会被赋予一个默认值。存储数字类型的数组默认为零,而任何其他类型则设置为 null 或无。
数组是 C# 中最不灵活的集合类型。这主要是因为元素创建后无法添加或删除。然而,它们在存储不太可能改变的信息时特别有用。与其他集合类型相比,缺乏灵活性使得它们速度更快。

基本语法

· 数组变量需要指定的元素类型、一对方括号和唯一的名称。
· new 关键字用于在内存中创建数组,后面跟着值类型和另一对方括号。
· 数组将存储的元素数量位于第二对方括号内。
elementType[] name = mew elementType[numberOfElements];
让我们举个例子,我们需要获得游戏中的前三名高分:
int topPlayerScores = new int[3];
细分来看,topPlayerScores 是一个整数数组,将存储三个整数元素。由于我们没有添加任何初始值,因此 topPlayerScores 中的三个值均为 0。
您可以在创建数组时直接为其赋值,方法是将它们添加到变量声明末尾的一对大括号内。
//Longhand initializer
int[] topPlayerScores = new int[] {313, 549, 984};
//Shorthand initializer
int[] topPlayerScores = {313, 549, 984};

索引和下标

每个数组元素都按照分配的顺序存储,这称为索引。数组是零索引的,这意味着元素顺序从零开始,而不是从一开始。将元素的索引视为其引用或位置。在 topPlayerScores 中,第一个整数 313 位于索引 0 处,549 位于索引 1 处,984 位于索引 2 处。

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏

使用下标运算符按索引定位各个值,下标运算符是一对包含元素索引的方括号。例如,要检索并存储 topPlayerScores 中的第二个数组元素,我们将使用数组名称,后跟下标括号和索引 1。
// The value of score is set to 549
int score = topPlayerScores[1];
下标运算符也可用于直接修改数组值,就像任何其他变量一样,甚至可以单独作为表达式传递。
topPlayerScores[1] = 1200;
Debug.Log("topPlayerScores[1]");

topPlayerScores 中的值现在为 313、1200 和 984。

范围例外:

创建数组时,元素的数量是固定的且不可更改的,这意味着我们无法访问不存在的元素。在 topPlayerScores 示例中,数组长度为 3,因此有效索引的范围为 0 到 2。任何 3 或更高的索引都超出了数组的范围,并将在控制台中生成一个恰当命名的 IndexOutOfRangeException。

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏

Lists 列表

列表与数组密切相关,在单个变量中收集相同类型的多个值。在添加、删除和更新元素时​​,它们更容易处理,但它们的元素不是按顺序存储的。这有时会导致比阵列更高的性能成本。

基本语法

List类型变量需要满足以下要求:
· List 关键字、其在左右箭头字符内的元素类型以及唯一的名称。
· new 关键字初始化内存中的列表,用List 关键字和元素类型之间的箭头字符表示。
· 一对括号,以分号结尾。
List<elementType> name = new List<elementType>();
与数组一样,列表可以通过在一对大括号内添加元素值在变量声明中进行初始化。
List<elementType> name = new List<elementType>(){value1, value2};
元素按照添加顺序存储,零索引,并且可以使用下标运算符访问。
成员——示例
创建一个名为 questPartyMembers 的字符串类型列表,并使用三个字符的名称对其进行初始化。
添加调试日志以使用 Count 方法打印出列表中的队伍成员数量。
保存文件并在 Unity 中播放。
我们初始化了一个包含三个字符串值的新列表,并使用 List 类中的 count 方法打印出元素的数量:

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏

常用方法

可以像使用下标运算符和索引的数组一样访问和修改列表元素,只要索引在 List 类的范围内即可。但是,List 类具有多种扩展其功能的方法,例如添加、插入和删除元素。继续使用 questPartyMembers 列表,让我们向团队添加一个新成员:
questPartyMembers.Add("Craven");
Add 方法将新元素追加到列表末尾。这使得 questPartyMembers 计数达到 4,元素顺序如下:
{"Grim", "Merlin", Sterling", "Craven"};
要将元素添加到列表中的特定位置,我们可以向 insert 方法传递索引和要添加的值。
questPartyMembers.Insert(1, "Tanis");
当在先前占用的索引处插入元素时,列表中的所有元素的索引都会增加 1。
{"Grim", "Tanis", "Merlin", Sterling", "Craven"};
删除一个元素也同样简单;我们所需要的只是索引或文字值,List 类可以完成这项工作。
// Both of these methods would remove the required element
questPartyMembers.Remove(0);
questPartyMembers.Remove("Grim");
编辑结束后,questPartyMembers 现在包含索引从 0 到 3 的以下元素。
{"Tanis", "Merlin", Sterling", "Craven"};
上面的例子在Unity中

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏

数组(Arrays)和列表(Lists) — Unity C#,游戏开发小结,unityc#教程,unity3d开发教学,unity,c#,游戏引擎,游戏文章来源地址https://www.toymoban.com/news/detail-817944.html

到了这里,关于数组(Arrays)和列表(Lists) — Unity C#的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [游戏开发][Unity]Assetbundle下载篇(7)获取运行时(边玩边下)下载列表

    [游戏开发][Unity]Assetbundle下载篇(7)获取运行时(边玩边下)下载列表

    打包与资源加载框架目录 啥是运行时下载清单?现在大多数手游都会有一个边玩边下功能,会提示用户是否开启下载,要XXX流量,如果你下载完了,可能还会有奖励。   疑问:为何要有边玩边下功能? 解答:为了发包的包体小,并且是越小越好! 我们的游戏想要赚钱,第一

    2024年02月08日
    浏览(10)
  • Unity 游戏开发、03 基础篇 | C#初级编程

    https://learn.u3d.cn/tutorial/beginner-gameplay-scripting Update(不是按固定时间调用的) 经常用于 移动非物理特性的物体(不是物理对象) 简单定时器 接收输入 FixedUpdate(调用时间间隔相同) 进行任何必要的物理计算(任何物理对象) 最好使用力来定义移动 使用 IDE 的 Unity Event Func

    2024年02月08日
    浏览(8)
  • [游戏开发][Unity] Xlua与C#互相调用规则

    [游戏开发][Unity] Xlua与C#互相调用规则

    静态方法无需获取类对象,获取到类直接执行 例1: 例2 调用非静态方法一定要获取到具体的C#类对象!!! 例1:获取单例对象并调用非静态方法,Singleton是单例的一种写法,网上源码很多 下面是Lua调用C#的代码,我这是模拟Xlua的工程,以类的方式实现交互 看Log日志发现:

    2024年02月07日
    浏览(12)
  • 4、python列表Lists

    列表和你可以用它们做的事情。包括索引,切片和变异! Python 中的 List 表示有序的值序列: In [1]: 我们可以把其他类型的事情列入清单: In [2]: 我们甚至可以列一个清单: In [3]: 列表可以包含不同类型的变量: In [4]: 可以使用方括号访问单个列表元素。 哪个行星离太阳最近? Pyt

    2024年01月17日
    浏览(6)
  • 【游戏开发算法每日一记】使用随机prime算法生成错综复杂效果的迷宫(C#,C++和Unity版)

    【游戏开发算法每日一记】使用随机prime算法生成错综复杂效果的迷宫(C#,C++和Unity版)

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 1.首先全部判定为墙,最外的为路包裹墙( 类似于防止数组越界 ) 2.红色为它的检测范围(假设检测点在如图所示的位置)—

    2024年02月05日
    浏览(9)
  • unity开发知识点小结02

    unity开发知识点小结02

    虚拟轴就是一个数值在-1 1内的轴,这个数轴上重要的数值就是-1,0和1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键,即将按键1设置为负轴按键,按键2设置为正轴按键。在没有按下任何按键的时候,虚拟轴的数值为0;在按下按键1的时候,虚拟轴的数值会从0 -1进行

    2024年02月07日
    浏览(7)
  • Azure Kinect微软摄像头Unity开发小结

    Azure Kinect微软摄像头Unity开发小结

    Azure Kienct是微软的代替Kinect的摄像头,用处其实蛮多的,最近做了这个的一些开发,总结一下。 如果只是当普通摄像头用的话,有集成显卡就行了。如果要用人体跟踪,至少要1050的独显。 微软摄像头代的东西还不少,可以建立点云地图,但是没试过。 下面是官方的SDK。后面

    2024年02月04日
    浏览(7)
  • 基于unity+c#的随机点名系统(简单UI界面+列表+数组)

    基于unity+c#的随机点名系统(简单UI界面+列表+数组)

    目录 一、功能界面显示 二、UI 1、视频的使用 (1)渲染纹理 (2) 视频铺全屏 (3)视频的调用 2、 下拉文本框的使用(旧版) 3、输入文本框的使用(旧版) 4、更新Test文本和下拉文本框的内容 三、保存之前的记录 1、PlayerPrefs (1)保存数据: (2)读取数据: (3)删除

    2024年04月27日
    浏览(39)
  • 数据结构之线性表的类型运用Linear Lists: 数组,栈,队列,链表

    定义 一个最简单,最基本的数据结构。一个线性表由多个相同类型的元素穿在一次,并且每一个元素都一个前驱(前一个元素)和后继(后一个元素)。 线性表的类型 常见的类型:数组、栈、队列、链表 这些不同数据结构的特性可以解决不同种类的问题 题面 题目描述 有

    2024年02月12日
    浏览(13)
  • 无涯教程-Lua - Arrays(数组)

    数组是对象的有序排列,可以是包含行集合的一维数组,也可以是包含多行和多列的多维数组。 在Lua中,数组是使用带有整数的索引表实现的。数组的大小不是固定的,并且可以根据无涯教程的要求(取决于内存限制)来增长。 一维数组可以使用简单的表结构表示,并且可以使

    2024年02月14日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包