В моей 3D-игре Unity я пытаюсь добавить холст после того, как все коллекционные предметы будут собраны, с надписью «Уровень завершен ... загрузка следующего уровня», а затем загружаю следующий уровень, но после того, как все предметы коллекционирования собраны, игра все еще играет. Скрипт успешно отключает холст, но не включает его повторно после того, как 5 предметов коллекционирования будут собраны и оценка достигнет 5. Пожалуйста, помогите. Вот скриншот моего сценария.
Проблемы с загрузкой холста после сбора всех предметов коллекционирования
Ответы (1)
Проблема в том, что вы уничтожаете объект с помощью скрипта перед запуском кода, который включает холст, потому что ваш скрипт прикреплен к вашему коллекционному объекту. Попробуйте отключить рендерер сетки и коллайдер вашего пикапа, а затем уничтожьте его после запуска кода.
private MeshRenderer meshRenderer; // the mesh renderer attached to the player
private Collider collider; // pickup's collider
private void Start ()
{
meshRenderer = GetComponent<MeshRenderer>(); // get the mesh renderer component from the pickup (put this in the start function)
collider = GetComponent<Collider>(); // get the collider attached to the pickup
}
В вашей функции OnTriggerEnter вместо Destroy (gameObject)
используйте meshRenderer.enabled = false
и collideer.enabled = false
. Затем в конце функции OnTriggerEnter вы можете использовать Destroy (gameObject)
.
Также вам не нужен отдельный холст для каждого элемента пользовательского интерфейса. У вас может быть только 1 холст, содержащий все различные меню / элементы, и включить каждый из них.
person
Antoine
schedule
13.06.2020
Я просто добавил это в свой код и немного изменил, но он по-прежнему не работает. Теперь я могу собирать один и тот же объект снова и снова, потому что они не удаляются (у меня есть 5 коллекционных объектов). Если вы хотите увидеть новый код, я могу добавить его за вас.
- person Renee Johnston; 13.06.2020
Извините, я не учел, вам также нужно отключить коллайдер на коллекционном предмете. Я обновлю ответ сейчас.
- person Antoine; 13.06.2020
Спасибо. Еще 2 вопроса - куда добавить скрипт? на мой холст и все мои предметы коллекционирования? а также вы хотите, чтобы я отключил коллайдер на всех моих предметах коллекционирования? извините, я так плохо работаю в Unity и боролся с этим весь день.
- person Renee Johnston; 13.06.2020
Это сработало? К чему сейчас привязан ваш скрипт? Я предположил, что ваш скрипт был прикреплен к каждому из ваших коллекционных предметов, потому что он назывался собираемым скриптом и имел Destroy (gameObject). Если этот сценарий присутствует на каждом собираемом объекте, он отключит рендерер меша и коллайдер только объекта, который был собран, так что это будет выглядеть так, как будто игровой объект был уничтожен. Чтобы напрямую ответить на ваш вопрос, добавьте этот скрипт ко всем своим коллекционным предметам, а не к холсту.
- person Antoine; 13.06.2020
Это все еще не работает. Я не могу подобрать предметы коллекционирования, и счет застрял на 0. Я не знаю, что еще делать. Я отключил свои коллайдеры коробки на всех моих 5 коллекционных предметах, и теперь мой скрипт доступен только на моих предметах коллекционирования. Что-нибудь в этом плохого? Я также добавлю обновленный снимок экрана с моим кодом в свой вопрос, чтобы вы могли его дважды проверить.
- person Renee Johnston; 13.06.2020
Привет, где изначально был ваш сценарий до того, как я ответил на ваш вопрос? Вы смотрели мой обновленный ответ? (Я обновил свое исходное сообщение улучшенным ответом, я не хотел начинать с отключенными коллайдерами, но должен был отключить эти коллайдеры скриптом. Не добавляйте это на свой холст.
- person Antoine; 13.06.2020
Хорошо, я видел ваш новый код и знаю, что вы сделали не так. Обычно в строке 17 добавляют
collider.enabled = false
. В инспекторе ваш коллайдер включен по умолчанию. Удалите сценарий с холста и убедитесь, что он есть на всех ваших пикапах.
- person Antoine; 13.06.2020
Привет. Все еще не работает. Коллекционные предметы по-прежнему не прибавляются к очкам или не удаляются. Также в строке 10 есть зеленая строка, в которой говорится, что CollectVirus.collider скрывает унаследованный член Component.collider. Понятия не имею, что это значит, но это может что-то изменить ?? Вы хотите, чтобы я вам еще что-нибудь показал?
- person Renee Johnston; 13.06.2020
Хм. Можете ли вы обновить свой скрипт (в тексте, а не изображение), вашу иерархию и инспекторы ваших пикапов и холста.
- person Antoine; 13.06.2020
Я не уверен, что это значит ... как мне это сделать? извиняюсь.
- person Renee Johnston; 13.06.2020
Я имел в виду обновить заданный вами вопрос, опубликовав полный текст скрипта, а также скрипт ScoringSystem. Также прикрепите картинку своей иерархии и фотографии инспектора ваших пикапов и холста :)
- person Antoine; 13.06.2020