![]() |
Ответ: Передача переменной в метод
такой вопрос, принципиально важно где объявлять делегат - в теле класса или вне его? Задача чтобы делегатами могли пользоваться все объекты. Проблем с видимостью не будет?
Еще момент, если одно и то же событие объявляется в скрипте, который висит на нескольких объектах - ничего страшного? или лучше создать отдельный класс где описывать события? |
Ответ: Передача переменной в метод
Цитата:
|
Ответ: Передача переменной в метод
а как выделить эвенты в отдельный класс? чтобы доступ к ним получать с разных объектов? Сделал класс
PHP код:
PHP код:
делегат объявил отдельно вне класса вот так: PHP код:
error CS0070: The event `Event_List.Event_Select_Unit' can only appear on the left hand side of += or -= when used outside of the type `Event_List' пните в нужном направлении.. )) |
Ответ: Передача переменной в метод
У меня такое ощущение, что ты не совсем понимаешь, как евенты работают, и что это вообще. Плюс ошибки, которые ты скинул, вполне ясно говорят, в чём трабла. Логично, что ты не можешь получить евент геткомпонентом. Логично, что ты не можешь его вызвать. Это не так работает. Тебе точно евенты нужны?
http://habrahabr.ru/post/213809/ http://habrahabr.ru/post/245219/ |
Ответ: Передача переменной в метод
мне важно понимать как они работают, так как логически в голове алгоритмы под них выстраиваются. Я осознаю что мое понимание делегатов и событий весьма поверхностно.
Переделал код таким образом: PHP код:
В этом коде (другой скрипт) осуществляется вызов события: PHP код:
Теперь я правильно понял логику применения событий и делегатов? Хотя бы на базовом уровне?)) |
Ответ: Передача переменной в метод
В общем да. Главное сразу приучи себя или делать проверку на null или делегат объявлять с пустышкой (по первой ссылке в комментах есть варианты, как это делать), или потом офигеешь искать, откуда эксцепшены валятся.
|
Ответ: Передача переменной в метод
Цитата:
Проверяй есть ли пересечение через "объект.bounds.Contains" и дальше двигай как тебе надо. :) Можно даже без коллайдеров использовать. Проблема будет только с тем, что надо учитывать повороты объектов. Я этот момент учел при помощи такого говнокода: Код:
_Point[0] = new Vector3(_colliderTr.bounds.center.x + _colliderTr.bounds.size.x/2, _transform.position.y, _colliderTr.bounds.center.z + _colliderTr.bounds.size.z/2); _collider был BoxCollider объекта на котором висит скрипт. _colliderTr был MeshRenderer проверяемого объекта. |
Ответ: Передача переменной в метод
отлично, сегодня вечером попробую применить на практике )) уже придумал как, главное что-бы сработало )
|
Ответ: Передача переменной в метод
Цитата:
|
Ответ: Передача переменной в метод
Цитата:
|
Ответ: Проблемы разработки от EvilOkta
Складывай боундсы всех моделей, чтобы получить общий
http://docs.unity3d.com/ScriptRefere...capsulate.html |
Ответ: Проблемы разработки от EvilOkta
что можно почитать про отложенное выполнение методов? Не знаю как сформулировать, даже не знаю термин. Рылся в справках. Мне нужно что-то типа пула (очереди) выполнения методов с последовательным выполнением, т.е. при выполнении одного метода активируется очередь других методов, которые начинают исполняться один за другим.
Немного топорно объяснил, попробую на примере: Есть условная ловушка - при попадании в нее с объектом производятся определеннные манипуляции. Задача завершить выполнение предыдущего метода (который обеспечил попадание в ловушку) при этом не начиная следующего, пока не сработает ловушка. Ловушка срабатывает через корутину - сначала она определяет, что объект в ее зоне действия, после этого ожидает секунду (для завершения предыдущего метода) и запускает собственный механизм ловушки (объекту отправляется сообщение что он в ловушке, чтобы он заблокировал свои методы перемещения). При этом косяк в том, что во время этой секунды методы не заблокированы и объект спокойно может уйти из ловушки, а она затем сработает естественно вызвав баги в логике кода. Если жестко зафиксировать отлов события срабатывания ловушки как только (!) объект оказывается в его зоне действия, то еще веселее: ловушка срабатывает до того, как объект попал в зону действия (на самом краю срабатывания триггера - объект не вошел целиком в триггер, это важно!) - как результат ломается логика кода, объект начинает колбасить Как я вижу ситуацию: объект попадает в ловушку, скрипт должен дозавершить текущий метод, которым он попал в ловушку, но при этом зная, что следующим должен сработать метод ловушки, а не перемещения дальше. Своего рода предзнание. Куда копать? |
Ответ: Проблемы разработки от EvilOkta
PHP код:
|
Ответ: Проблемы разработки от EvilOkta
Цитата:
и еще - Action - это делегат, который не нужно явно объявлять, он как бы доступен по умолчанию, я правильно понял - это он? https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx |
Часовой пояс GMT +4, время: 16:37. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot