【Unity&对象数组】如何创建一个长度不确定的对象数组以及使用方法&墙壁单元方块对象数组
在Unity使用过程中,很多时候会用到长度不确定的 对象数组。
不确定的 对象数组 使用 声明部分 的代码就可以了。
但是,只要是数组,要把对象存放在对象数组里面,就必须知道 要存放 对象 的数量,也就是必须得知道 数组的长度
使用 list ,也是可以实现,本文不赘述
定义private List<Vector3> offsets = new List<Vector3>();
offsets.Add(transform.position); 从0开始依次添加对象
offsets.RemoveAt(0); 移除编号为0的对象
在代码 实际使用中,有很多情况 数组的长度 是动态变化的,根据不同条件,不同变量 不断的变化,以我的这个代码为例子
要动态创建4面墙壁,就必须得知道 这个对象 的长宽高, 以空物体 的Scale 的X,Y,Z,来代替空物体墙壁的长宽高
于是可得 组成 4面墙壁的 单位方块 的数量
float length =0 ; float width = 0; width = transform.localScale.z * transform.localScale.y;//(z+) length = transform.localScale.x * transform.localScale.y;//(x+)
知道了后,再对 对应 以 墙壁 对象数组 的 对应墙壁的单位方块 数量 创建一个新的对象数组
wallgo1 = new GameObject[(int)width]; wallgo3 = new GameObject[(int)width]; wallgo2 = new GameObject[(int)length]; wallgo4 = new GameObject[(int)length];对每个对象 赋值 为空,否则 会报错(请以实际情况为主)
for (int i = 0; i < width;i++) { wallgo1[i] = null; wallgo3[i] = null; }// for (int i = 0; i < length; i++) { wallgo2[i] = null; wallgo4[i] = null; }//
然后就创建完毕,要调用一面墙壁的所有 单位方块,就 直接调用 这4个对应的墙壁 对象数组即可
具体请结合文章参看
那么该怎么创建呢
声明
private GameObject[] wallgo1 = null;//墙壁数组 wallgo1 private GameObject[] wallgo2 = null; private GameObject[] wallgo3 = null; private GameObject[] wallgo4 = null;
赋值
void WallGoArray() { float length =0 ; float width = 0; width = transform.localScale.z * transform.localScale.y;//(z+) length = transform.localScale.x * transform.localScale.y;//(x+) wallgo1 = new GameObject[(int)width]; wallgo3 = new GameObject[(int)width]; wallgo2 = new GameObject[(int)length]; wallgo4 = new GameObject[(int)length]; for (int i = 0; i < width;i++) { wallgo1[i] = null; wallgo3[i] = null; }// for (int i = 0; i < length; i++) { wallgo2[i] = null; wallgo4[i] = null; }// }//
调用
只有当 对象数组有 对象,且有一定的长度的时候,对象数组 才能够被 调用。
在其他的函数里面可以调用 这 4 个对象 数组了。(一定要注意,这4个对象数组,先声明,后赋值,规定长度,并对 长度 内的每个 对象赋值,就算是 null也行)
以上就是 创建一个长度不确定的对象数组的用法。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Unity3D中可用的数组类型:
- 下一篇: unity之数组