1. 程式人生 > >unity指令碼中執行時例項化一個prefab

unity指令碼中執行時例項化一個prefab

在unity中例項化一個prefab 比例項化一個物體省程式碼,而且更方便靈活

  • 例項化一個object並建立:
void Start() {
        for (int y = 0; y < 5; y++) {
            for (int x = 0; x < 5; x++) {
                GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
                cube.AddComponent<Rigidbody>();
                cube.transform.position = new
Vector3(x, y, 0); } } }
  • 例項化一個prefab,需提前建立好一個cube,加元件Rigidbody,建立prefab,並把該cube拖到prefab上,程式碼只需要兩句:
void Start() {
    for (int y = 0; y < 5; y++) {
        for (int x = 0; x < 5; x++) {
            Instantiate(brick, new Vector3(x, y, 0), Quaternion.identity);
        }
    }
}
  • 而且修改prefab時,不需要修改程式碼,靈活性好。

增加大量固定格式的物體,用例項化prefab的方法也更方便

public GameObject prefab;
public int numberOfObjects = 20;
public float radius = 5f;

void Start() {
    for (int i = 0; i < numberOfObjects; i++) {
        float angle = i * Mathf.PI * 2 / numberOfObjects;
        Vector3 pos = new Vector3(Mathf.Cos(angle), 0
, Mathf.Sin(angle)) * radius; Instantiate(prefab, pos, Quaternion.identity); } }