Я пытаюсь уничтожить экземплярные сборные файлы с одним и тем же тегом, один за другим, от последнего экземпляра до первого, и я зациклился на том, как это сделать.Уничтожить созданные экземпляры с одним и тем же тегом, по одному, от последнего экземпляра до первого?
Идея состоит в том, что я хочу иметь собственный редактор, который позволит мне создать несколько надстроек, а затем «отменить» последнее создание с помощью двух кнопок GUI - «Разместить объект» и «Отменить» соответственно.
На данный момент я могу успешно создавать надписи, добавлять к ним те же теги, а затем уничтожать их один за другим, но они уничтожаются от первого до последнего экземпляра.
код у меня до сих пор:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectInstantiateControl : MonoBehaviour {
public List<GameObject> prefabList = new List<GameObject>();
[HideInInspector]
public int objectSelectionIndex = 0;
GameObject instance;
public void PlaceObject()
{
switch (objectSelectionIndex)
{
case 1:
Debug.Log("Just received a number 1 from the editor");
GameObject object_A = Resources.Load("Object_A") as GameObject;
instance = Instantiate(object_A, this.transform.position, this.transform.rotation, this.transform);
instance.tag = "UsedObject";
prefabList.Add(instance);
break;
case 2:
Debug.Log("Just received a number 2 from the editor");
GameObject object_B = Resources.Load("Object_B") as GameObject;
instance = Instantiate(object_B, this.transform.position, this.transform.rotation, this.transform);
instance.tag = "UsedObject";
prefabList.Add(instance);
break;
case 3:
Debug.Log("Just received a number 3 from the editor");
GameObject object_C = Resources.Load("Object_C") as GameObject;
instance = Instantiate(object_C, this.transform.position, this.transform.rotation, this.transform);
instance.tag = "UsedObject";
prefabList.Add(instance);
break;
case 4:
Debug.Log("Just received a number 4 from the editor, deleting the object");
prefabList.Remove(GameObject.FindWithTag("UsedObject"));
DestroyImmediate(GameObject.FindWithTag("UsedObject"));
break;
}
}
И часть из сценария редактора для кнопок графического интерфейса «Место объекта» и «Undo»:
GUILayout.BeginHorizontal();
if (GUILayout.Button("Place object", GUILayout.Height(25)))
{
ObjectInstantiateControl myScript = (ObjectInstantiateControl)target;
myScript.objectSelectionIndex = 1;
myScript.PlaceObject()();
}
if (GUILayout.Button("Undo", GUILayout.Height(25)))
{
ObjectInstantiateControl myScript = (ObjectInstantiateControl)target;
myScript.objectSelectionIndex = 4;
myScript.PlaceObject();
}
GUILayout.EndHorizontal();
действительно нужна помощь по этому вопросу, любые идеи или предложения приветствуются. Заранее спасибо;)
часть «Отменить» выглядит точно так же, как часть «Место объекта»? –
Есть ли причина, по которой вы используете 'FindWithTag' вместо того, чтобы просто вытаскивать последний элемент из списка и уничтожать его? – rutter