unity中关于预制体的生成

在场景中如果要大量生成某一个物体,就可以用Instantiate函数生成指定的预制体啦。

  • 首先把要生成的物体参数在Inspector面板上设置好,该加的组件、脚本都加上,将物体拖到Prefab文件夹中,即可变成预制体。
  • 然后就是写脚本的预制体生成逻辑(这个脚本不是预制体身上带的,而是生成预制体的脚本),使用Instantiate函数;

          Instantiate函数我就不说了,主要是对生成预制体的位置、缩放、父物体、旋转等参数设置。

  • 重点要说一下,在场景中同时有三个该预制体生成,在预制体身上的脚本应该放三个预制体共有的方法,比如说动画播放、位置移动等。不能放只有一个能改变的参数,比如:

           三个脚本都有这个碰撞函数,意义是发生碰撞isCollision就变为true,然后在其他脚本检测isCollision,如果发生碰撞了就debug。

public class Prefabs : MonoBehaviour {

    private gameManager manager;

	// Use this for initialization
	void Start () {
        manager = gameManager.instance;

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

    void OnCollisionEnter(Collision collision)
    {
        manager.isCollision = true;
    }
}

     

public class gameManager : MonoBehaviour {

    public static gameManager instance;

    public bool isCollision = false;
     void Awake()
    {
        instance = this;
    }

    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        if (isCollision) {
            Debug.Log("和预制体碰撞");
        }
	}
}

     如果像这样写的话,Debug的那句话不会输出,因为你触碰了一个预制体参数变成true,其余的两个还是false。

最好的方法是变为true的时候在添加脚本;

你可能感兴趣的:(Unity)