Как скопировать Компонент, а не ссылку на него?
Добавлено: 10 янв 2019, 15:49
Здравствуйте, хочу сделать лист для инвентаря, но я не пойму почему не работает, я уже посмотрел несколько видео где люди писали такой же скрипт, но он РАБОТАЛ!
Вот сам скрипт добавления в лист элемента.
Я уже понял, что ошибка в том, что я сохраняю в лист именно ссылку на компонент и после удаляю объект с этим компонентом и поэтому пропадает и ссылка на компонент. Но как я писал в начале, у некоторых этот скрипт работал!!!
Также я уже понял самый легкий способ выхода из этой ситуации, это создать какой-нибудь пустой объект в котором будут хранится компоненты, но все же это не экономно, да и выглядит глупо и в будущем вызовет еще не мало проблем. Так что можете, что-нибудь посоветовать для решения этой проблемы?
Вот сам скрипт добавления в лист элемента.
Синтаксис:
Используется csharp
RaycastHit hit;
if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,1))
{
if(hit.collider.GetComponent<Item>() != null)
{
items.Add(hit.collider.GetComponent<Item>());
Destroy(hit.collider.gameObject);
}
}
if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,1))
{
if(hit.collider.GetComponent<Item>() != null)
{
items.Add(hit.collider.GetComponent<Item>());
Destroy(hit.collider.gameObject);
}
}
Я уже понял, что ошибка в том, что я сохраняю в лист именно ссылку на компонент и после удаляю объект с этим компонентом и поэтому пропадает и ссылка на компонент. Но как я писал в начале, у некоторых этот скрипт работал!!!
Также я уже понял самый легкий способ выхода из этой ситуации, это создать какой-нибудь пустой объект в котором будут хранится компоненты, но все же это не экономно, да и выглядит глупо и в будущем вызовет еще не мало проблем. Так что можете, что-нибудь посоветовать для решения этой проблемы?