Удаление объекта после его создания при нажатии клавиши

240
06 ноября 2017, 19:30

Я создаю два объекта при нажатии лкм. При нажатии на правую клавишу мыши мне нужно, чтобы они удалились. Не могу это сделать из за модификаторов доступов у созданных объектов. Вот код:

public Vector3 spawn1;
    public Vector3 spawn2;
    public GameObject spawn1_1;
    public GameObject spawn2_2;
    public GameObject box;
    public bool flag = false;

    // Use this for initialization
    void Start () {
        spawn1 = spawn1_1.transform.position;
        spawn2 = spawn2_2.transform.position;
    }
    // Update is called once per frame
    void Update () {
        if(Input.GetMouseButtonDown(0) && !flag)
        {  
            flag = true;
            GameObject cube1 = Instantiate (box, spawn1, Quaternion.identity) as GameObject;
            GameObject cube2 = Instantiate (box, spawn2, Quaternion.identity) as GameObject;
            cube1.transform.rotation = new Quaternion (Random.Range (1, 360), Random.Range (1, 360), Random.Range (1, 360),0);
            cube2.transform.rotation = new Quaternion (Random.Range (1, 360), Random.Range (1, 360), Random.Range (1, 360),0);
            cube1.GetComponent<Rigidbody>().AddForce (Vector3.forward*Random.Range(1000,5000));
            cube2.GetComponent<Rigidbody>().AddForce (Vector3.forward*Random.Range(1000,5000));

Answer 1

Не могу это сделать из за модификаторов доступов у созданных объектов

Не из-за модификаторов доступа, а из-за того, что вы объявляете их в одном конкретном методе, область которых ограничена тем самым методом.

Самое первое решение "в лоб" - вынести объявление в начало к остальным полям:

...
public GameObject box;
public bool flag = false;
GameObject cube1;
GameObject cube2;

void Start () {
    spawn1 = spawn1_1.transform.position;
    spawn2 = spawn2_2.transform.position;
}
void Update () {
    if(Input.GetMouseButtonDown(0) && !flag)  {  
        flag = true;
        cube1 = Instantiate (box, spawn1, Quaternion.identity) as GameObject;
        cube2 = Instantiate (box, spawn2, Quaternion.identity) as GameObject;
        ...

А вообще, если объектов будет не два, а более, то их, как правило, заносят либо в список (List), либо словарь (Dictionary) и добавление/удаление производят именно в него/из него

READ ALSO
NHibernate не подключается с SQL Server

NHibernate не подключается с SQL Server

Осваивая NHibernate в связке с ASPNET, столкнулся с проблемой, что NHibernate не может подключиться с ошибкой: Сообщение = Не удается открыть базу данных...

265
Преинкремент и постинкремент

Преинкремент и постинкремент

Задали вопрос на учебе, что больше потребляет ресурсов ++i или i++Самостоятельно инфо не нашёл, прошу подсказать где искать

859
Как работает auto-property?

Как работает auto-property?

Имеется такой код :

245