每次重新启动游戏时都会更改砖块精灵位置

Changing bricks sprite position everytime I restsrt the game

我正在制作一个砖块破坏游戏,其中砖块放置如下:

现在我想要的是,每当我开始我的新游戏或游戏结束后重新开始时,砖块应该随机改变但位置不应该改变!

有谁知道我该怎么做?我应该更改 Bricks 脚本还是 Inspector 本身或两者?

这是积木脚本:

public class BricksScript : MonoBehaviour {

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

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

    void OnCollisionEnter2D(Collision2D col){
        if (col.gameObject.tag == "ball") {
            gameObject.SetActive (false);
        }
    }
}

我的 Unity 安装在其他地方,但这里是一个总体思路:

  • 创建一个空的游戏对象并附加一个管理积木的脚本。
  • 在层次结构中,将积木附加到 brickmanager 对象。
  • 在 brick 管理器脚本 Start() 方法中:
    • 遍历一次积木得到它们所有的位置并将它们存储在一个列表中
    • 然后第二次从您的列表中为他们分配随机位置。

或者,您可以将位置硬编码为积木管理器脚本中的代码,或使用空游戏对象来保存位置。

谢谢大家我解决了我的问题如下:

  • 首先我创建了一个 empty gameobject 并附加了一个 script
  • 然后我将脚本编码如下:

    public class positionsBricks : MonoBehaviour {
    
        public GameObject[] bricks;
        int brickNo;
        // Use this for initialization
        void Start () {
            Vector3 Brickpos = new Vector3 (transform.position.x, transform.position.y, transform.position.z);
            brickNo = Random.Range (0, bricks.Length);
            Instantiate (bricks [brickNo], Brickpos, transform.rotation);
        }
    
        // Update is called once per frame
        void Update () {
    
        }
    }
    

在 inspector 处,我将所有预制件 拖放到脚本中,然后

  • 我复制了 gameobject 并将其放置在较早的原始 prefabs 所在的相同位置并删除了旧的