При нажатие на [GameObject] в моём случае им является [Button], нужно удалить это [GameObject] и заспавнить новый [GameObject] с чем мой скрипт успешно справляется, проблема в том что новый созданный [GameObject] не удочерить к [Panel], помогите пожалуйста с этим разобраться!
Внимание: всё что закоменчено не работает.
public GameObject virus1; // Prefab
//public GameObject panel; // Panel
public void Destroy()
{
Destroy(gameObject);
Instantiate (virus1, new Vector3(Random.Range(-300f, 300f), Random.Range(-600f, 600f), 0f), Quaternion.identity); // деапозон спавна
// GameObject childObject = Instantiate (virus1, new Vector3(Random.Range(-300f, 300f), Random.Range(-600f, 600f), 0f), Quaternion.identity); // деапозон спавна
// childObject.transform.SetParent(panel.transform, false); // родитель
}
Внимание: на скриншоте наглядно показано где спавнится объект.
Задаешь родителя у обьекта через трансформ:
SomeButton.transform.SetParent(panel.transform, false);
Это работает. Но....
Если уж ты вызываешь Destroy(gameObject);
то у тебя уничтожается обьект с даным скриптом. И, по-факту код что идет дальше может и не выполнится.
Уверен, если бы ты отдебажил код, то ты бы это увидел. То есть закоменченный тобою метод не работает потому... что он банально не выполнялся ни разу. Ты там хоть что пиши, оно выполнится не должно. :)
Попробуй перенести Destroy(gameObject);
в самый конец метода и тогда этот закоменченный тобою код будет работать.
То есть должно быть как-то так:
public GameObject virus1; // Prefab //проследи что бы был заасайнен префаб
private GameObject panel; // Panel
// Use this for initialization
void Start()
{
panel = GameObject.Find("panelr");//проследи что бы это имя было ПРАВИЛЬНО указано
}
public void Destroy()
{
GameObject childObject = Instantiate (virus1, new Vector3(0f, 0f, 0f), Quaternion.identity);
childObject.transform.SetParent(panel.transform, false);
childObject.transform.position = new Vector3(Random.Range(-300f, 300f), Random.Range(-600f, 600f), 0f);//парент уже задан и теперь уже нужно задавать позицию, ПОСЛЕ того как задан парент
Destroy(gameObject);
}
Большое вам спасибо что помогли решить мою проблему, Destroy(gameObject);
его перемещение не сыграло не какую роль но я всё равно прислушался вашего мнение так как в дальнейшем из за этого могут возникнуть ошибки,код переписал таким образом всё работает что то было лишние в вашем совете но всё же я добился нужного мне результата:
public GameObject virus1; // Prefab
private GameObject panel; // Panel
// Use this for initialization
void Start()
{
panel = GameObject.Find("VirusEvolution"); // Panel которая является родителем
}
public void Evolution()
{
GameObject childObject = Instantiate(virus1, new Vector3(Random.Range(-300f, 300f), Random.Range(-600f, 600f), 0f), Quaternion.identity); // деапозон спавна
childObject.transform.SetParent(panel.transform, false);
Destroy(gameObject); // удаление virus
}
Вам ставлю галочку, ещё раз благодарю за помощь !!!
[Flipsizze]
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо выполнить очень много POST запросов на сайт, получить ответ (типо "1,2,3" добавить в массив и отправить запросы на другой URL
Есть свой User ControlКак вложить в него например TextBlock как ето сделано в ScrollViewer?
Есть ссылка на сайтНеобходимо получить selector или xpath для всех доступных элементов
Приложение устанавливаться не будетНужна небольшая бд