如何解决在Unity中销毁实例化游戏对象的问题
我实例化了Gameobject
,现在我想销毁它,但是由于某种未知的原因,我找不到解决方法。当我检查对象的位置是否小于某个数字时,甚至小于该数字它不会在if语句中执行代码:下面是代码,因此,如果有人对如何销毁这些实例化对象有一个了解:
[Serializefield]
GameObject Jabuka;
[Serializefield]
GameObject kruska;
[Serializefield]
GameObject brisacDonji;
[Serializefield]
GameObject brisacGornji;
public float MoveSpeed = 3f;
public GameObject spawnerodozgo;
public GameObject spawnerodozdo;
GameObject UIjabuka;
GameObject UIkruska;
Rigidbody2D jabukaRig;
Rigidbody2D kruskaRig;
float minx = -2f;
float maxx = 2f;
float vrijemeSpawna = 2f;
float nextSpawn = 0f;
int staSpawnati;
int SpawnGoreILidole;
float positionPos;
public float vecLocityI;
private Vector2 screenBounds;
// Start is called before the first frame update
void Start()
{
screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width,Screen.height,Camera.main.transform.position.z));
}
// Update is called once per frame
void Update()
{
vecLocityI = Random.Range(2,6);
positionPos = Random.Range(minx,maxx);
SpawnGoreILidole = Random.Range(1,3);
switch (SpawnGoreILidole)
{
case 1:
spawnodozgo();
break;
case 2:
spawnodozdo();
break;
}
}
void FixedUpdate()
{
}
public void spawnodozgo()
{
if (Time.time > nextSpawn)
{
staSpawnati = Random.Range(1,3);
Debug.Log("sta" + staSpawnati);
switch (staSpawnati)
{
case 1:
UIjabuka = Instantiate(Jabuka,new Vector3(positionPos,spawnerodozgo.transform.position.y,1),transform.rotation);
jabukaRig = UIjabuka.GetComponent<Rigidbody2D>();
jabukaRig.veLocity = new Vector2(0,-vecLocityI);
if (UIjabuka.transform.position.y < brisacDonji.transform.position.y)
{
Destroy(UIjabuka);
Debug.Log("unisteno je");
}
break;
case 2:
UIkruska = Instantiate(kruska,transform.rotation);
kruskaRig = UIkruska.GetComponent<Rigidbody2D>();
kruskaRig.veLocity = new Vector2(0,-vecLocityI);
break;
}
nextSpawn = Time.time + vrijemeSpawna;
}
}
public void spawnodozdo()
{
if (Time.time > nextSpawn)
{
staSpawnati = Random.Range(1,new Vector3(Random.Range(minx,maxx),spawnerodozdo.transform.position.y,vecLocityI);
break;
case 2:
UIkruska = Instantiate(kruska,vecLocityI);
break;
}
nextSpawn = Time.time + vrijemeSpawna;
}
}
解决方法
我没有足够的时间查看您的整个代码。但是,如果您的switch语句大小写不为1,则您的if语句将永远不会执行。如果您要破坏对象,则需要确保将变量staSpawnati
设置为1。
从上面发布的代码中,您需要满足3个条件才能使用“销毁”功能。
- SpawnGoreILidole必须为1 ,以满足第一个开关条件并输入spawnOdozgo()
- staSpawnati必须为1 才能满足第二种切换要求,并输入销毁所在的代码部分。
- UIjabuka.transform.position.y必须小于brisacDonji.transform.position.y ,然后销毁将在UIjabuka游戏对象上执行。
从我的角度来看,代码根本没有任何意义,因为您将破坏上面创建的4行游戏对象。但这是执行销毁所需的条件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。