/// <summary> /// 初始化 /// </summary> private void Init() { //计算格子网格的长度(纵向的格子数量) grid_Length = (int)(-cubeOriginPos * transform.localScale.x * 2 / cubeOriginScale); //计算格子网格的宽度(横向的格子数量) grid_Width = (int)(-cubeOriginPos * transform.localScale.z * 2 / cubeOriginScale); //实例化二维数组 allCubes = new CubeGrid[grid_Length, grid_Width]; for (int i = 0; i < grid_Length; i++) { for (int j = 0; j < grid_Width; j++) { //计算每个格子的x坐标 float x = cubeOriginPos * transform.localScale.x + cubeOriginScale * i + cubeOriginScale / 2; //计算每个格子的z坐标 float z = cubeOriginPos * transform.localScale.z + cubeOriginScale * j + cubeOriginScale / 2; //生成格子 GameObject currentGrid = PrefabManager.GetInstance(). CreateGameObjectByPrefab("CubeGrid", new Vector3(x, 0, z), Quaternion.identity); //获取格子组件 CubeGrid cubeGrid = currentGrid.GetComponent <CubeGrid>(); //设置格子所对应的坐标【3,4】 cubeGrid.x = i; cubeGrid.z = j; //随机一个数 int randomNum = Random.Range(1, 101); //如果当前随机数进入障碍物概率范围 if (randomNum <= obsticleScale) { //设置格子类型为障碍物 cubeGrid.SetGridType(GridType.Obsticle); } //放置到二维数组 allCubes[i, j] = cubeGrid; } } //通过数组找到起点,并设置为起点类型 allCubes[(int)startPos.x, (int)startPos.y].SetGridType(GridType.Start); //通过数组找到终点,并设置为终点类型 allCubes[(int)endPos.x, (int)endPos.y].SetGridType(GridType.End); }