Среда, 23 Мая 2018, 00:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Отключение функций кода при удаление объекта со сцены (Отключение часть функций кода при удаление объекта со сцены)
Отключение функций кода при удаление объекта со сцены
HEJlbCOHДата: Воскресенье, 07 Января 2018, 22:40 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте, у меня возник вопрос, как я могу сделать чтоб код автоматически перестал реагировать на объект если тот удалился со сцены
Заранее благодарю за помощь
Код Save'а:
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gc_SimpleSave : MonoBehaviour
{
    public GameObject player;
    public GameObject cube;
    public GameObject cube1;
    public GameObject cube2;
    public GameObject cube3;
    public GameObject cube4;
    public GameObject cube5;
    public GameObject cube6;
    public GameObject cube7;
    public GameObject cube8;
    public GameObject cube9;
    public GameObject cube10;
    public GameObject cube11;
    public GameObject cube12;
    public GameObject cube13;

    public void Save()
    {
        ES2.Save(cube.transform.position, "cubePosition");
        ES2.Save(cube1.transform.position, "cube1Position");
        ES2.Save(cube2.transform.position, "cube2Position");
        ES2.Save(cube3.transform.position, "cube3Position");
        ES2.Save(cube4.transform.position, "cube4Position");
        ES2.Save(cube5.transform.position, "cube5Position");
        ES2.Save(cube6.transform.position, "cube6Position");
        ES2.Save(cube7.transform.position, "cube7Position");
        ES2.Save(cube8.transform.position, "cube8Position");
        ES2.Save(cube9.transform.position, "cube9Position");
        ES2.Save(cube10.transform.position, "cube10Position");
        ES2.Save(cube11.transform.position, "cube11Position");
        ES2.Save(cube12.transform.position, "cube12Position");
        ES2.Save(cube13.transform.position, "cube13Position");

        ES2.Save(player.transform.position, "playerPosition");
    }
}

код Load'а
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gc_SimpleLoad : MonoBehaviour
{
    public GameObject player;
    public GameObject cube;
    public GameObject cube1;
    public GameObject cube2;
    public GameObject cube3;
    public GameObject cube4;
    public GameObject cube5;
    public GameObject cube6;
    public GameObject cube7;
    public GameObject cube8;
    public GameObject cube9;
    public GameObject cube10;
    public GameObject cube11;
    public GameObject cube12;
    public GameObject cube13;

    public void Load()
    {
        cube.transform.position = ES2.Load<Vector3>("cubePosition");
        cube1.transform.position = ES2.Load<Vector3>("cube1Position");
        cube2.transform.position = ES2.Load<Vector3>("cube2Position");
        cube3.transform.position = ES2.Load<Vector3>("cube3Position");
        cube4.transform.position = ES2.Load<Vector3>("cube4Position");
        cube5.transform.position = ES2.Load<Vector3>("cube5Position");
        cube6.transform.position = ES2.Load<Vector3>("cube6Position");
        cube7.transform.position = ES2.Load<Vector3>("cube7Position");
        cube8.transform.position = ES2.Load<Vector3>("cube8Position");
        cube9.transform.position = ES2.Load<Vector3>("cube9Position");
        cube10.transform.position = ES2.Load<Vector3>("cube10Position");
        cube11.transform.position = ES2.Load<Vector3>("cube11Position");
        cube12.transform.position = ES2.Load<Vector3>("cube12Position");
        cube13.transform.position = ES2.Load<Vector3>("cube13Position");
    }
}
VostruginДата: Воскресенье, 07 Января 2018, 23:22 | Сообщение # 2
участник
Сейчас нет на сайте
Где перестал реагировать? На что перестал реагировать?



drcrackДата: Воскресенье, 07 Января 2018, 23:42 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Код
ES2.Save(cube9.transform.position, "cube9Position");

Добавь везде проверки на null:
Код
if(cube9 != null) ES2.Save(cube9.transform.position, "cube9Position");

Хотя код конечно жесть, ему срочно нужен хороший рефакторинг, пока не все потеряно


Сообщение отредактировал drcrack - Воскресенье, 07 Января 2018, 23:42
TLTДата: Понедельник, 08 Января 2018, 01:03 | Сообщение # 4
Сейчас на сайте
Просто добавь переменную и обведи код на IF, а когда объект деактивируешь меняй значение переменной на 1 или 0, как решишь...

Дао, выраженное словами, не есть истинное Дао.
drcrackДата: Понедельник, 08 Января 2018, 02:12 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Цитата
Просто добавь переменную и обведи код на IF, а когда объект деактивируешь меняй значение переменной на 1 или 0, как решишь...

Новую переменную добавлять незачем
Если обьект удаляется со сцены, достаточно сравнения с null (оно перегружено и возвращает true если обьект удален)
Впрочем, даже если бы он просто деактивировался, можно было бы проверить свойство activeSelf, не заводя лишних переменных
HEJlbCOHДата: Понедельник, 08 Января 2018, 12:58 | Сообщение # 6
был не раз
Сейчас нет на сайте
Сейчас тестану

Добавлено (08 января 2018, 12:48)
---------------------------------------------

Цитата drcrack ()
if(cube9 != null) ES2.Save(cube9.transform.position, "cube9Position");

сейчас проверю

Добавлено (08 января 2018, 12:58)
---------------------------------------------
Испытал код но чет он не сохраняет что объект удален со сцены

drcrackДата: Понедельник, 08 Января 2018, 13:05 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Цитата
Испытал код но чет он не сохраняет что объект удален со сцены

А ты об этом и не писал)
VostruginДата: Понедельник, 08 Января 2018, 13:07 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата HEJlbCOH ()
Испытал код но чет он не сохраняет что объект удален со сцены

Тогда тебе нужно хранить не только позиции объектов, а и их состояние.






Сообщение отредактировал Vostrugin - Понедельник, 08 Января 2018, 19:11
HEJlbCOHДата: Вторник, 09 Января 2018, 14:00 | Сообщение # 9
был не раз
Сейчас нет на сайте
Добавлено (08 января 2018, 17:09)
---------------------------------------------
drcrack, помочь бы мог =(

Добавлено (09 января 2018, 14:00)
---------------------------------------------
все, вопрос закрыт, переписал полностью скрипт на сохранение всех объектов сцены :angel:

Сообщение отредактировал HEJlbCOH - Понедельник, 08 Января 2018, 17:09
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Отключение функций кода при удаление объекта со сцены (Отключение часть функций кода при удаление объекта со сцены)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг