赞
踩
Instantiate(预制体,transform.position,transform.rotation);
创建一个5*5*5的正方体的代码如下,
- public class InstantiationTest : MonoBehaviour
- {
- public GameObject myPrefab;
- public int 长 = 5;
- public int 宽 = 5;
- public int 高 = 5;
- void Start()
- {
- for(int y = 0; y < 高; y++)
- {
- for(int x = 0; x < 宽; x++)
- {
- for (int z = 0; z < 高; z++)
- {
- Instantiate(myPrefab, new Vector3(x, y, z), Quaternion.identity);
- }
- }
- }
-
- }
- }
把预制件拖动到脚本的myPrefab字段里
创建方块组成的圆圈 转自官方手册在运行时实例化预制件 - Unity 手册
- // 以圆形形式实例化预制件
- 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;
- float x = Mathf.Cos(angle) * radius;
- float z = Mathf.Sin(angle) * radius;
- Vector3 pos = transform.position + new Vector3(x, 0, z);
- float angleDegrees = -angle * Mathf.Rad2Deg;
- Quaternion rot = Quaternion.Euler(0, angleDegrees, 0);
- Instantiate(prefab, pos, rot);
- }
- }
效果图如下,来自官方手册
以下脚本显示了如何使用 Instantiate() 函数来发射飞弹,脚本放在枪管上
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class FireProjectile : MonoBehaviour
- {
- //这个脚本通过在放置它的GameObject的位置实例化它来发射一个预制的投射物,然后在同一个GameObject的前进方向上设置速度。
- public Rigidbody projectile;
- public float speed = 4;
-
- void Update()
- {
- if (Input.GetButtonDown("Fire1"))
- {
- Rigidbody p = Instantiate(projectile, transform.position, transform.rotation);
- p.velocity = transform.forward * speed;
- }
- }
- }
以下脚本(放置在飞弹预制件上)执行以下操作:在飞弹碰撞物体后,在飞弹的当前位置实例化爆炸,然后删除飞弹游戏对象。
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Projectile : MonoBehaviour
- {
- //这个脚本放置在一个抛射的GameObject上
- public GameObject explosion;
- void Start()
- {
- //抛射物在10秒后被删除,无论它是否与任何物体碰撞(为了防止丢失的实例永远留在场景中)
- Destroy(gameObject,10);
- }
- void OnCollisionEnter()
- {
- //击中某物:引起爆炸,并移除抛射物
- Instantiate(explosion,transform.position,transform.rotation);
- Destroy(gameObject);
- }
- }
效果图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。