【问题标题】:Unity 2D respawning Instantiate issueUnity 2D重生实例化问题
【发布时间】:2014-11-28 22:12:00
【问题描述】:

我正在制作一款 2D 太空入侵者风格的游戏,但我在重生时遇到了很大的困难。我想要发生的是当宇宙飞船被击中时,它被摧毁,例如。销毁();

但是当我尝试实例化() SpaceShip 的 Prefab 时,它会出现(clone)(clone)问题,所以我试图让一个 Empty GameObject 运行脚本在 SpaceShip 的 Prefab 中生成,并且当它获取销毁();它会在 3 秒后重生。非常感谢您的帮助,我正在使用 JavaScript 进行编码。

【问题讨论】:

  • 我正在使用 STRICT 2D
  • (克隆)(克隆)问题?你将什么游戏对象传递给实例化?听起来您是通过引用场景中的游戏对象而不是从资产文件夹来实例化。
  • 我正在尝试从我的资产中实例化一个预制件,并且克隆问题不再是问题我只是想在游戏开始时从一个空游戏对象的脚本中实例化我的 SpaceShip 预制件,并且当 SpaceShip Prefab 获得 Destroy();

标签: unity3d unityscript unity3d-2dtools


【解决方案1】:

有一个类每隔几秒钟从预制件中实例化一次。您需要通过编辑器拖动playerPrefab,并且需要指定生成位置。

public class Spawner : Monobehaviour
{
    public GameObject playerPrefab;

    public void spawn()
    {
        Instantiate(playerPrefab, spawnPosition, spawnRotation);
    }
}

然后,当您的 Player 死亡时,您可以将 SendMessage 加入 Spawner 类。

public class Player : MonoBehaviour
{
    void Update()
    {
        if(hp <= 0)
        {
             // Grab the reference to the Spawner class.
             GameObject spawner = GameObject.Find("Spawner");

             // Send a Message to the Spawner class which calls the spawn() function.
             spawner.SendMessage("spawn");
             Destroy(gameObject);
        }
    }
}

UnityScript 中的代码相同

Spawner.js

  var playerPrefab : GameObject;

  function spawn()
  {
      Instantiate(playerPrefab, spawnPosition, spawnRotation);
  }

播放器.js

  function Update()
  {
      if(hp <= 0)
      {
          // Grab the reference to the Spawner class.
          var spawner : GameObject = GameObject.Find("Spawner");

          // Send a Message to the Spawner class which calls the spawn() function.
          spawner.SendMessage("spawn");
          Destroy(gameObject);
      }
  }

【讨论】:

  • 唯一的问题是,我不希望 Prefab 每隔几秒就生成一次,就在我开始时和它获取 Destroy() 时;
  • 我是把它放在 Start() 还是 Update() 中?
  • 顺便说一句:我只想让宇宙飞船毁灭()我已经对付过敌人
  • 我以为 SpaceShip 是敌人,嗯,它是同一个原则。
  • 非常感谢!你帮了大忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
相关资源
最近更新 更多