Unity:GameObject 重复实例化问题
Unity: GameObject repeated instantiation issue
我每次调用 NewSpawn() 时都试图实例化一个僵尸预制件,这时 reSpawn 变量变为 'true'(通过检查器)。但是,一旦我实例化一个僵尸,它就会无限循环僵尸的克隆。 [Making clones of clones of clones] 如何将其限制为每次方法调用一个僵尸实例化? (我想制作 10 个僵尸,而不是 10,000 个。
谢谢!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Zombie : MonoBehaviour {
public GameObject zombiePrefab;
public Transform zombieSpawnPoint;
private Transform[] spawnPositions;
public bool reSpawn = false;
private bool lastToggle = false;
// Use this for initialization
void Start () {
spawnPositions = zombieSpawnPoint.GetComponentsInChildren<Transform>();
}
private void NewSpawn() //spawn location of newZombie
{
Instantiate(zombiePrefab, transform.position, transform.rotation);
int i = Random.Range(1, spawnPositions.Length);
transform.position = spawnPositions[i].transform.position;
}
void Update () { //T-toggle
if (reSpawn != lastToggle)
{
NewSpawn();
reSpawn = false;
}
else
lastToggle = reSpawn;
}
}
只需在您的按钮点击事件中调用 NewSpawn()
而不是将 reSpawn
设置为 true。
此外,这没有任何意义:
else
{
lastToggle = reSpawn;
}
他们已经相等了。
我每次调用 NewSpawn() 时都试图实例化一个僵尸预制件,这时 reSpawn 变量变为 'true'(通过检查器)。但是,一旦我实例化一个僵尸,它就会无限循环僵尸的克隆。 [Making clones of clones of clones] 如何将其限制为每次方法调用一个僵尸实例化? (我想制作 10 个僵尸,而不是 10,000 个。
谢谢!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Zombie : MonoBehaviour {
public GameObject zombiePrefab;
public Transform zombieSpawnPoint;
private Transform[] spawnPositions;
public bool reSpawn = false;
private bool lastToggle = false;
// Use this for initialization
void Start () {
spawnPositions = zombieSpawnPoint.GetComponentsInChildren<Transform>();
}
private void NewSpawn() //spawn location of newZombie
{
Instantiate(zombiePrefab, transform.position, transform.rotation);
int i = Random.Range(1, spawnPositions.Length);
transform.position = spawnPositions[i].transform.position;
}
void Update () { //T-toggle
if (reSpawn != lastToggle)
{
NewSpawn();
reSpawn = false;
}
else
lastToggle = reSpawn;
}
}
只需在您的按钮点击事件中调用 NewSpawn()
而不是将 reSpawn
设置为 true。
此外,这没有任何意义:
else
{
lastToggle = reSpawn;
}
他们已经相等了。