包含此页的版本:
不含此页的版本:
您可以实例化预制件一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,你可以从中在场景中创建新的对象实例。更多信息
请参阅术语表用作射弹,并在应用程序中使用爆炸效果摧毁它们。
以下示例在用户按下开火按钮时实例化射弹预制件。您可以将其附加到游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表它充当预制件的启动器。
Projectile,然后将其拖到Assets文件夹以创建预制件资源。您可以选择添加texture渲染游戏对象、精灵或 UI 元素时使用的图像。纹理通常应用于网格表面,以赋予其视觉细节。更多信息
请参阅术语表添加到预制件,更改其尺寸,或导入不同的模型对象(例如角色、建筑物或家具)的 3D 模型表示。更多信息
请参阅术语表充当弹丸。
要向射弹预制件添加爆炸,您必须具有代表爆炸的预制件资产。您可以使用粒子系统通过在场景中生成大量小型 2D 图像并为其制作动画来模拟液体、云和火焰等流体实体的组件。更多信息
请参阅术语表创建预制件资源,或在Asset Store 由 Unity 和社区成员创建的不断增长的免费和商业资产库。提供各种各样的资产,从纹理、模型和动画到整个项目示例、教程和编辑器扩展。更多信息
请参阅术语表并将其添加到Assets文件夹。
然后创建一个名为Projectile如下:
using UnityEngine;
public class Projectile : MonoBehaviour
{
public GameObject explosion;
void Start()
{
// Deletes the projectile after 10 seconds, regardless
// of whether it collided with anything. This prevents
// instances from staying in the scene indefinitely.
Destroy(gameObject,10);
}
void OnCollisionEnter()
{
// When the projectile hits something, create an explosion
// and remove the projectile.
Instantiate(explosion,transform.position,transform.rotation);
Destroy(gameObject);
}
}
该脚本在射弹的当前位置实例化爆炸,并在射弹与某物碰撞时删除射弹游戏对象。
要使用该脚本,请将其附加到射弹预制件资产:
Projectile预制件资源,并在预制件编辑模式下打开它。Projectile脚本到它上面。要启动射弹,您需要创建一个脚本,用于在按下开火键时实例化射弹,并将该脚本添加到游戏对象。
创建一个名为FireProjectile并向其中添加以下内容:
using UnityEngine;
using UnityEngine.InputSystem;
public class FireProjectile : MonoBehaviour
{
// Only GameObjects with a Rigidbody can be assigned as the projectile.
public Rigidbody projectile;
// Speed of the projectile when fired.
// This is a public variable so it can be adjusted in the Unity Editor.
public float speed = 4;
// Update is called once per frame
// This method checks for input and fires a projectile if the attack action is pressed.
void Update()
{
// Check if the "Attack" action was pressed this frame
// If it was, instantiate a projectile at the player's position and set its velocity.
if (InputSystem.actions.FindAction("Attack").WasPressedThisFrame())
{
Rigidbody p = Instantiate(projectile, transform.position, transform.rotation);
p.linearVelocity = transform.forward * speed;
}
}
}
此脚本使用Instantiate发射射弹。创建公共预制件变量时,变量类型可以是游戏对象,也可以是任何有效的组件类型(内置 Unity 组件或您自己的 MonoBehaviour 脚本之一)。
对于组件类型变量(例如 Rigidbody、Collider 和 Light),您只能将该组件类型的游戏对象分配给变量,并且Instantiate函数返回对新游戏对象实例上该特定组件的引用。
您必须将脚本附加到游戏对象才能使用它。为此,请执行以下作:
FireProjectile脚本到多维数据集上。Projectileprefab 资源添加到 Fire Projectile 脚本的 Projectile 字段中。立方体发射球体射弹,当它们与地面碰撞时会发生爆炸。
请注意,任何实例化的对象都显示在层次结构中,并带有(Clone)附加到名称后。