Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在统一中复活被摧毁的物体_C#_Unity3d_Instantiation_Destroy - Fatal编程技术网

C# 在统一中复活被摧毁的物体

C# 在统一中复活被摧毁的物体,c#,unity3d,instantiation,destroy,C#,Unity3d,Instantiation,Destroy,我有这样一个脚本,当我触发时,我的敌人会在随机时间产生,然后敌人会在随机时间摧毁自己。我想让敌人再次重生,这样它就可以一次又一次地这样做。任何建议: public class SpawnManager : MonoBehaviour { public GameObject Enemy; // the enemy prefab public float mytimer; // the time to wait before spawn public float transport;// the

我有这样一个脚本,当我触发时,我的敌人会在随机时间产生,然后敌人会在随机时间摧毁自己。我想让敌人再次重生,这样它就可以一次又一次地这样做。任何建议:

public class SpawnManager : MonoBehaviour {

public GameObject Enemy; // the enemy prefab
public float mytimer; // the time to wait before spawn
public float transport;// the time it has to destroy itself

private GameObject _spawndEnemy; // the enemy that was spawnd

void SpawnEnemy()
{
    var enemySpawnPoint =  GameObject.Find("FFEnemySpawn1").transform;
    _spawndEnemy = Instantiate(
         Enemy, enemySpawnPoint.position, enemySpawnPoint.rotation) as GameObject;
    transport = Random.Range (2,15);
}

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.name == "FFTrigger") {
        mytimer = Random.Range(0,15);
        Invoke("SpawnEnemy", mytimer);
        Debug.Log("Spawn Normal");
    }
}

void Update()
{
    Destroy (_spawndEnemy, transport);
}
}

Hi Ghostdre这个问题可能会在这里得到更好的回答,至于你的问题,我建议为游戏对象创建一个
敌人
类对象和数据成员,以及一个时间变量,它决定敌人在被摧毁之前应该活多久

e、 g

公共类管理器
{
公共浮动寿命;
...
无效更新()
{
寿命-=时间增量时间

如果(终生嗨,幽灵,这个问题可能更适合游戏开发,因此,对于让多个敌人产卵,我会创建一个
敌人
类,然后在你的
产卵管理器
类中保存一个数组或一组在你的
产卵管理器
类中随机存在一段时间的
敌人
,谢谢Matthew,我正在考虑数组。)但我不知道如何设置。但我会在游戏开发网站上询问。@Ghostdre你想让视差滚动式游戏成为一种游戏吗?不,这是一款fps 3d恐怖游戏,但我想我找到了如何设置的方法。我只是在“繁殖敌人”中再次使用Invoke方法。但我可能会遇到一个问题,敌人应该只繁殖一次,但是相反,它会多次繁殖。敌人是你的预制场,所以请尝试制作敌人的实例而不是游戏对象。你可以稍后将实例作为游戏对象处理,并且不要在更新中使用Destroy,因为你可以在繁殖敌人()结束时使用它方法
公敌;
敌方。游戏对象……
因此,创建阵列“公敌敌人=新列表”将再次使敌人重生?这取决于您希望它如何工作,您希望它能够从同一个种子中繁殖多个敌人吗?还是希望一个种子在任何给定时间创建一个敌人?仅一个敌人在一次繁殖时繁殖。但是如果敌人摧毁了自己,我希望敌人在繁殖时重生。我已经编辑了我的示例,我的示例中有…是您现有代码的所在,您需要在
spawnedy()
方法中为生存期设置一些值(如果您想要一个随机数,请使用
random.Range(minVal,maxVal)
除此之外,您还应致力于更好地分解此程序中的功能(例如,使用敌方类来存放游戏对象、使用寿命等),否则您的代码将很快变得非常笨拙
public class SpawnManager
{
    public float lifeTime;

    ...

    void Update()
    {
        lifeTime -= Time.deltaTime

        if (lifeTime <= 0)
        {
            Destroy (_spawndEnemy, transport);
            SpawnEnemy()
        }
    }
}