数组的作用
方便控制每一个克隆的物体
(NPC路线控制等)
Bug:下标超出范围异常(宿主下标越界)
错误代码:
public GameObject[] soliderArray;//定义数组
public GameObject soliderObj=null;//士兵预制体
private float zPos;
for(int i=0;i<5;i++)
{
soliderArray[i]=Instantiate(soliderObj,new Vector3(0f,0f,zPos),Quaternion.identity) ;
zPos += 1.5f;
}
soliderArray[0].transform.position=new Vector3(0f,5f,0f);
错误原因:没有申请内存
修改:加上内存申请
soliderArray= new GameObject[5];
完整代码
单个控制克隆体
群体控制克隆体
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrayTest : MonoBehaviour
{
public GameObject[] soliderArray;//定义数组
public GameObject soliderObj=null;//士兵预制体
private float zPos;
void Start()
{
soliderArray= new GameObject[50];
if(soliderArray==null)
{
Debug.LogError("请将模型拽人参数栏");
}
for(int i=0;i<50;i++)
{
soliderArray[i]=Instantiate(soliderObj,new Vector3(0f,0f,zPos),Quaternion.identity) ;
zPos += 1.5f;
}
//第一个人从天上往下掉
soliderArray[0].transform.position=new Vector3(0f,5f,0f);
}
// Update is called once per frame
void Update()
{
//第二个士兵原地旋转
//soliderArray[1].transform.Rotate(Vector3.up * Time.deltaTime * 200f);
//50个士兵一起转圈
for(int i=0;i<50;i++)
soliderArray[1].transform.Rotate(Vector3.up * Time.deltaTime * 200f);
}
}
在堆区申请内存,把申请到的引用对应给给数组