Unity游戏制作中的C#基础(4)数组声明和使用

Unity的C#编程教程_40_array 数组 Array Syntax C# 中的数组,用于存放多个相同类型的元素 比如你有五个角色,那么这五个角色的名字是相同类型,可以放在一个数组中进行管理 假设我们不用数组: public string nameA = "XiaoMing"; public string nameB = "ZhangSan"; public string nameC = "LiSi"; public string nameD = "WngWu"; public string nameE = 阅读详情

一、数组的声明

        在 C# 中,声明数组有多种方式,每种方式都有其适用的场景,下面为你逐一详细介绍:

1. 直接初始化声明

        这种方式直观且便捷,在声明数组的同时就为其赋初值,让数组从诞生之初就拥有了具体的数据。格式为:数据类型[] 数组名 = {数组值};

示例代码如下:

int[] numbers = { 1, 2, 3, 4, 5 };

        此代码声明了一个名为 numbers 的整型数组,并初始化为包含 1 到 5 的五个整数。这种声明方式适用于你在编写代码时就已经明确知道数组要包含哪些元素的情况。比如,在游戏中你要定义一个固定的关卡顺序列表,就可以使用这种方式来声明数组。


2. 声明空数组

        有时候,你可能暂时还不知道数组中要存放哪些元素,但又需要一个数组对象来后续填充数据,这时就可以声明一个空数组。格式为:数据类型[] 数组名 = {};

示例:

int[] emptyArray = {};

        这里声明了一个名为 emptyArray 的空整型数组。虽然它目前没有包含任何元素,但它是一个合法的数组对象,可以在后续的代码中通过动态添加元素的方式来填充数据。例如,在游戏中根据玩家的不同选择来动态生成一组道具列表,就可以先声明一个空数组,然后根据选择结果向数组中添加元素。


3. 指定数组长度声明

        当你知道数组需要容纳的元素数量,但暂时还不清楚每个元素的具体值时,可以通过 new 关键字来声明数组并指定其长度。格式为:数据类型[] 数组名 = new 数据类型[数组长度];

示例:

int[] lengthArray = new int[10];

        这行代码声明了一个名为 lengthArray 的整型数组,其长度为 10。不过数组中的元素初始值都为该数据类型的默认值,对于 int 类型,默认值是 0。这种声明方式在需要预先分配一定内存空间来存储数据的场景中非常有用。比如,在游戏中要统计玩家在一定时间内的得分情况,你可以先声明一个固定长度的数组来存储每一次得分,然后在游戏过程中依次将得分填入数组。


4. 声明未初始化数组

        仅声明数组变量,不进行初始化。这种方式只是在内存中为数组引用分配了空间,但该引用并没有指向任何实际的数组对象。

示例:

int[] str1;

        需要注意的是,此时 str1 只是一个未被初始化的引用,它并不指向任何实际的数组对象,所以不能直接使用。如果尝试访问或操作 str1,会引发编译错误。而像下面这样声明的空数组:

int[] str2 = {};

   str2 是一个实际存在的空数组对象,可以正常使用。虽然它没有元素,但它已经在内存中分配了相应的空间,可以进行后续的操作。这种声明方式适用于你在后续代码中才会根据具体情况来创建数组对象的场景。


5. 指定长度并初始化声明

        结合指定长度和初始化操作,这种方式既明确了数组的长度,又为数组元素赋予了初始值。格式为:数据类型[] 数组名 = new 数据类型[数组长度] { 元素值 };

示例:

int[] specificArray = new int[5] { 10, 20, 30, 40, 50 };

        此代码声明了一个长度为 5 的整型数组 specificArray,并为其元素赋了初始值。这种声明方式在你既知道数组长度又明确元素具体值的情况下非常实用。比如,在游戏中要定义一个固定的奖励数值列表,就可以使用这种方式来声明数组。


二、数组元素的访问

        在 C# 中,数组元素通过索引来访问,索引从 0 开始。也就是说,数组的第一个元素索引为 0,第二个元素索引为 1,依此类推。

示例代码:

int[] numbers = { 1, 2, 3, 4, 5 };
int firstNumber = numbers[0]; // 访问第一个元素,值为 1
int thirdNumber = numbers[2]; // 访问第三个元素,值为 3

若尝试访问超出数组索引范围的元素,会引发 IndexOutOfRangeException 异常,这就好比你去一个只有 5 个房间的酒店,却要找第 6 个房间,显然是不存在的。所以在访问数组元素时要确保索引在合法范围内。为了避免这种异常的发生,在访问数组元素之前,可以先检查索引是否在数组的有效范围内。例如:

int[] numbers = { 1, 2, 3, 4, 5 };
int index = 2;
if (index >= 0 && index < numbers.Length)
{
    int element = numbers[index];
    // 处理元素
}
else
{
    // 处理索引越界的情况
    Console.WriteLine("索引越界!");
}

三、数组的常见操作

1. 遍历数组

        遍历数组是指依次访问数组中的每个元素,这在处理数组数据时非常常见。可以使用 for 循环或 foreach 循环来实现数组的遍历。

使用 for 循环遍历数组
int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}
使用 foreach 循环遍历数组
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

2. 修改数组元素

可以通过索引来修改数组中的元素值。

示例:

int[] numbers = { 1, 2, 3, 4, 5 };
numbers[2] = 10; // 将第三个元素的值修改为 10

四、结语

        希望通过本文的介绍,你能对 C# 数组有更深入的理解,并在 Unity 游戏开发中熟练运用数组来解决各种问题。后续我们还会继续探讨 C# 中更多的数据结构和编程技巧,帮助你进一步提升开发能力,让你在 Unity 游戏开发的道路上越走越远,创造出更加精彩的游戏作品。

八股文(Unity篇) 在Unity中,协程是通过迭代器实现的,即将协程函数的返回值类型定义为IEnumerator,然后使用yield语句暂停协程的执行,并在需要恢复执行时通过MoveNext()方法继续执行。Unity中的协程是一种能够在主函数中暂停和恢复执行的功能,它使用了C#的迭代器。Resources方式:Resources方式:使用Resources.Load方法加载Resources文件夹下的资源,这种方式的好处是简单易用,无需手动打包资源,但是会导致应用包变得较大,加载速度较慢,不适合较大的资源文件。 阅读详情

相关推荐

Unity 3D游戏开发 - C#语法基础 | 数组之二维数组

二维数组基本语法 声明+初始化 数据类型[,] 数组名 = new 数据类型[行数,列数]; 赋值与取值 赋值:   数组名[下标,下标] = 值; 取值:   数组名[下标,下标]; 声明+初始化+赋值 数据类型[,] 数组名 = new 数据类型[,]{ {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1} ...

weixin_41232641的博客 7950

Unity开发之C#基础-数组

数组的介绍 数组是c#中的一种数据结构,是数据类型的集合。可以理解为数组是一种将相同类型变量存储在一个集合的一种方式。下面,让我们来学习如何定义及使用数组 制作不易还请各位一键三连哦! 这里写目录标题数组的介绍1. 数组的定义及使用1.1 关键字new1.2 数组元素的使用2. 多维数组的定义及使用2.1二维数组3. 交错数组的定义及使用4. 数组的遍历 1. 数组的定义及使用 每个数组里的元素必须是相同类型的元素,被称为数组元素,数组中所包含的元素的个数总和,被称为数组的长度(Length()方法),数

想吃烤地瓜的博客 6931

C#基础及Unity中的C#基础使用

Visual Studio基础操作 1.ctrl+F5 启动 2.Home 键可定义到一行代码的最前端,End键可定义到一行代码的最后端 PageUp及PageDown是对当前文档的翻页 3.ctrl+k ctrl+c 组合快捷键 注释多行;ctrl+k ctrl+u 组合快捷键 取消多行注释 C#基础内容及Unity中基础使用 1.命名规则: 变量:enemyHp,方法或类:EnemyHp 2.输入输出: //输出 Console.Writ...

perouz的博客 946

unity的C#学习——数组、字符串和结构体

介绍了c#中数组的定义与属性、方法;字符串的定义与属性、方法;结构体的定义与特点,同时简单对比了类和结构的区别。

时生的博客 4104

Unity 如何制作和发布你的 Package

Unity Package 不做过多赘述,像 URP 本质上也是一个 Package,在 Unity 中可以通过菜单栏 → Window → Package manager 来管理你当前的所有 Package,本篇文章主要介绍:如何制作并发布属于你的 Package

加载中... 5683

C#基础(基于unity的运用)

输入和输出:print(1);print("23456");//只能在继承MonoBehaviour环境中使用Debug.Log(1);//在任意环境中可以输出Debug.LogWarning("")//警告Debug.LogError(“”);//在日志里面显示 错误数据类型:bool 类型常用于判断是否正确。//bool res= 100&gt;78;会返回turefloat 浮点型   fl...

hahahahusky的博客 4733

Unity数组Array

命名空间 using System; 数组的概念 数组是一个存储相同类型元素的固定大小的顺序集合。 定义数组 数据类型[] 变量名 = new 数据类型[数组长度]; //定义数组 int[] a = new int[3]; //定义并赋值 int[] b = new int[] { 1, 2, 3, 4 }; int[] c = { 1, 2, 3 }; 取值赋值 使用数组的索...

膜拜麻衣大神 2万+

【零基础入门unity游戏开发——unity通用篇30】Resources资源加载(基于unity6开发介绍)

Resources资源加载(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4114

unity数组

动态初始化:在定义数组时只指定数组的长度,由系统自动为元素赋初值的方式。静态初始化:定义数组的同时就为数组的每个元素赋值数组的静态初始化有两种方式1、类型门数组名=new 类型[]{元素,元素,…};2、类型[数组名={元素,元素,元素,...….上述的两种方式都可以实现数组的静态初始化,但是为了简便建议采用第二种方式。

m0_74289471的博客 1042

Unity引擎开发:Unity基础入门_(4).C#脚本基础

else {通过学习C#脚本的基础知识,你可以更好地理解和编写Unity中的游戏逻辑。变量和数据类型是基础,控制结构用于控制程序的执行流程,方法用于执行特定任务,类和对象用于组织和封装数据,继承和多态用于扩展类的功能,封装和访问修饰符用于保护类的内部数据,构造函数用于初始化对象,静态成员属于类本身,枚举用于定义一组命名的常量,结构体用于表示简单的数据结构,接口用于定义类的行为,委托和事件用于实现发布-订阅模式。这些知识点将帮助你编写更加健壮和高效的游戏代码。

chenlz2007的博客 843

深入理解C#编程与Unity游戏开发

在面向对象编程中,类是一组具有相同属性和行为的对象的蓝图。类的定义包括数据成员(变量)和成员函数(方法)。创建对象的过程通常涉及到使用类的构造函数来初始化对象的状态。以下是C#中定义类和创建对象的示例代码:class Car// 类的属性set;set;set;// 类的构造函数// 类的方法// 创建Car类的实例// 输出:Make: Toyota, Model: Corolla, Year: 2020在上述代码中,Car类定义了三个属性MakeModel和。

weixin_35649491的博客 871

Unity 学习日志—C# 基础(1)

~如果感兴趣可以去支持一下b站一唐老狮一

Nan_Gua_pie的博客 1958

Unity3D教程:Array数组类的使用(二)1

Unity3D教程:Array数组类的使用(一) Posted on 2013年07月25日 by U3d / Unity3D 基础教程 /被围观 69 次 U

C# 和 Unity 2021 游戏开发学习手册(三)

恭喜!英雄诞生现在是一个可玩的原型。我们实现了跳跃和射击机制,管理了物理碰撞和生成对象,并添加了一些基本的 UI 元素来显示反馈。我们甚至已经实现了玩家赢得比赛时重置关卡的功能。本章介绍了许多新主题,重要的是要回过头去确保您理解了我们编写的代码中包含了什么。特别注意我们对枚举、get和set属性以及命名空间的讨论。从现在开始,随着我们进一步深入 C#语言的可能性,代码将变得更加复杂。

龙哥盟 1152

基于RYU+Mininet的SDN校园网络实战:从零搭建虚拟化实验环境

本文详细介绍了如何利用RYU控制器和Mininet搭建SDN校园网络实验环境,从Ubuntu虚拟机准备到网络拓扑设计,再到关键网络功能实现。通过实战案例展示SDN在校园网络中的应用优势,包括简化配置、提升效率等,为网络工程师和学生提供了一套完整的虚拟化实验方案。

weixin_30872499的博客 455

国产大模型编程能力深度分析报告(2026年5月更新版)

2026年5月国产大模型编程能力报告显示,主流模型迎来重大升级。DeepSeek V4以1.6T参数创性能新高,Qwen3.6-Plus支持原生多模态编程,MiniMax M2.7转向闭源并优化Agent编码,Kimi K2.6成为商业化成熟的主力模型,GLM-5开源并涨价30%。阿里云百炼推出双轨订阅体系,区分团队和个人开发者需求。各模型在参数规模、上下文长度、性能表现和适用场景上各具优势,国产AI编程服务正加速向订阅制转型,成本效益显著提升。

Willin Wang 的全栈升级指南 1642

unity中的C#

/普通日志//警告//错误ctrl+N。

m0_57625433的博客 881

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 420

【Unity零基础跟练制作独立游戏】7.配置的读取解析和使用

跟练b站up 大家好我是冯无敌 的独立游戏跟练系列的记录,主要是对up的教学内容做一个比较主观的笔记,方便跟上思路和日后回顾。 本篇应用到一个现成的配置文件,继续学习配置读取、解析和使用。

weixin_45633843的博客 1250

第三篇:AMD 和 Intel

它像“乐高积木”一样,可以通过标准化的接口与其他部分组合,构建复杂系统。理解组件后,你会发现从操作系统到微服务,现代软件本质上都是组件的组合!

u013089100的博客 1030

固定时间收敛的控制器设计(基础知识)

针对控制系统的有限时间收敛和固定时间收敛给出一些常用定理。

qq_40241332的博客 1万+

Unity面试题C#基础知识答案共35(全)

无论是不是C#或者Unity开发者,均可用以下题型锻炼,面试教育你懂的需要注意的是下面都只是个人乱答,想看标准答案的可滚动到最后下载1. 请简述值类型与引用类型的区别我是想简述下为什么第一个问题总是这个,因为所有出题的面试官都不走心的,实际项目肯定是引用类型+值类型混用,难道你没写过? int currLevel =Game.Instance.LevelCount;值类型包括:数值类型,结构体,b...

大话程序员 2万+

STM32 TIM3硬件XOR+复位模式实现霍尔信号精准捕获

霍尔传感器是电机控制系统中获取转子位置的关键器件,其三路数字信号需通过高精度、低延迟的边沿检测机制转换为电角度信息。其核心原理在于利用定时器输入XOR逻辑合并多路信号,并结合从模式复位(Reset Mode)实现硬件级时间间隔测量——每次跳变强制计数器清零,使CNT值直接表征换相周期。该方案规避了软件轮询的不确定性,显著提升FOC控制的实时性与鲁棒性。典型应用场景包括BLDC/FOC电机驱动、机器人关节伺服及工业变频器设计,尤其适用于STM32F4系列等具备硬件XOR与从模式控制器的MCU平台。

weixin_28931507的博客 91

Unity学习笔记(零基础到就业)|Chapter02:C#基础

Chapter02(C#基础)中主要介绍了c#中枚举、数组、值类型与引用类型、函数(方法)、结构体的语法知识内容,并补充了一些面试/考试中的常见考题

feifei2233的博客 1806

海康VisionMaster与西门子PLC1200进行S7通信

通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......

haier123888的博客 1万+

MATLAB与ROS联合仿真——实例程序搭建思路

MATLAB与ROS联合仿真——实例程序搭建思路

慕羽★的博客 5227
上一篇: Unity游戏制作中的C#基础(3)加减乘除算术操作符,比较运算符,逻辑与,或运算符
下一篇: Unity游戏制作中的C#基础(5)条件语句和循环语句知识点全解析
Unity黑马王子
博客等级 码龄4年 1846粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值