我正在尝试创建一个迷宫,但我的cpu使用或内存使用量在运行游戏时会超载我如何解决它?

时间:2017-02-23 23:12:53

标签: c# unity3d unity5

我在Hierarch中添加了两个多维数据集。 第一个我附上脚本。 我将第二个立方体拖到Inspector的墙上。

在运行游戏时,我的整个电脑卡住了我不得不关闭电脑并重新开始。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MazeGenerator : MonoBehaviour {

    public GameObject wallHolder;
    public float wallLength = 1.0f;
    public int xSize = 5;
    public int ySize = 5;

    private Vector3 initialPos;

    // Use this for initialization
    void Start ()
    {
        CreateWalls();  
    }

    // Update is called once per frame
    void Update () {

    }

    void CreateWalls()
    {
        wallHolder = new GameObject();
        wallHolder.name = "Maze";

        initialPos = new Vector3((-xSize / 2) + wallLength / 2, (-ySize / 2) + wallLength / 2);
        Vector3 myPos = initialPos;
        GameObject tempWall;

        //For x axis
        for (int i = 0; i < ySize; i++)
        {
            for (int j = 0; j <= xSize; j++)
            {
                myPos = new Vector3(initialPos.x + (j * wallLength) - wallLength / 2, 0.0f, initialPos.z + (i * wallLength) - wallLength / 2);
                tempWall = Instantiate(wallHolder, myPos, Quaternion.identity) as GameObject;
                tempWall.transform.parent = wallHolder.transform;
            }
        }

        //for y axis
        for (int i = 0; i <= ySize; i++)
        {
            for (int j = 0; j < xSize; j++)
            {
                myPos = new Vector3(initialPos.x + (j * wallLength), 0.0f, initialPos.z + (i * wallLength) - wallLength);
                tempWall = Instantiate(wallHolder, myPos, Quaternion.Euler(0.0f, 90.0f, 0.0f)) as GameObject;
                tempWall.transform.parent = wallHolder.transform;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您在如何分配和引用wallHolder属性方面有些奇怪。密切关注你如何处理它。像这样分解它是个好主意:

size_t

将MazeGenerator脚本放在名为MazeGenerator的对象上。使用Inspector,将场景中的GameObject指定为wallObjectRoot,并将项目中的Prefab指定为wallObjectReference。您也可以使用场景中的gameObject作为wallObjectReference,但这有点不稳定。

此外,如果通过从Windows任务管理器(Ctrl + Shift + Esc)取消它来冻结它,你应该可以退出统一过程。