Отключение функций кода при удаление объекта со сцены
|
|
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 |
|
| |