Проблемы разработки от EvilOkta
Всем привет, не уверен что меня помнят ибо почти 4 (или больше?) года отсутствовал на форуме, возможно что-то поменялось.
Решил воскресить свой заброшенный на Blitz 3d проект и как площадку для реализации выбрал Unity, изучаю сейчас C#. Такой вопрос, предположим в скрипте есть метод, в процессе выполнения которого анализируется некоторая ситуация и по результатам анализа выбирается одна из некоторых переменных, назовем их условно intA, intB, intC, intD. Пусть на момент окончания анализа они имеют значения 10, 20, 30, 40 соответственно. Задача передать одну выбранную анализатором переменную в другой метод (предположим анализатор выбрал для обработки переменную intB ) и по выполнению другого метода вернуть значение выбранной переменной увеличенное на 5 (для примера). Идея в том, чтобы разработать универсальное решение для разного количества переменных. Есть подозрение что копать надо в делегатах, но если честно до сих пор не понимаю как они взаимодействуют (при универсальной сигнатуре метода). И есть подозрение что нужно использовать оператор return но не понимаю до конца как он работает при передаче в метод нескольких переменных (кстати тоже важно, как передавать в метод несколько выбранных переменных и возвращать их выборочно?) Надеюсь пнете в нужном направлении )) |
Ответ: Передача переменной в метод
Так? Или я не понял что ты хочешь?
PHP код:
|
Ответ: Передача переменной в метод
Да, это как раз и интересовало, а как одновременно передавать в метод несколько таких параметров, есть способ?
т.е. пеердавать, скажем, intA для одной цели, а IntB для другой но ествественно за один вызов. С помощью ref есть возможность? Я правильно понял логику: PHP код:
|
Ответ: Передача переменной в метод
Так не будет работать потому что ты значение переменных копируешь в другие переменные и передаешь уже для изменения их.
|
Ответ: Передача переменной в метод
точно, я не учел что передаются другие переменные. Но сам синтаксис передачи - правильный?
или надо: PHP код:
задача с возвратом переменных уже есть идеи как решить, надо просто обмозговать |
Ответ: Передача переменной в метод
про ref можно почитать тут
|
Ответ: Передача переменной в метод
спасибо, сегодня попробую поэксперементировать, как я понял из справки с помощью ref можно передавать не только переменную но и класс? или конкретный экземпляр класса?
|
Ответ: Передача переменной в метод
экземпляр, класс можно передавать через шаблон http://msdn.microsoft.com/ru-ru/library/512aeb7t.aspx
|
Ответ: Передача переменной в метод
здорово, мне кажется как раз то что нужно для реализации моей задачи, еще раз спасибо. Универсальный шаблон мне пока рановато, а передача экземпляра класса в связке с ref решит мою проблему.
p.s. надеюсь дело пойдет, а то пока не могу абстрагироваться от модели разработки блитца к модели ООП |
Ответ: Передача переменной в метод
Собственно если передать экземпляр класса, то можно его поля менять. Т.к. это ссылочный тип. Нельзя менять поля у структур (типов значений - ValueType), их надо передавать с помощью ref.
|
Ответ: Передача переменной в метод
значит я для передачи параметров в метод могу сделать класс в котором перечислю все возможные параметры, которые можно передавать в метод (они после этого станут полями класса, правильно?). После блока-анализатора я создаю экземпляр класса в котором заполняю поля необходимыми для передачи параметрами, остальным например проставляю метки "без изменения" (образно выражаясь), в методе обработчике обрабатываю экземпляр класса - возвращаю в исходный метод и там выполняю замещение тех параметров которые требуются используя как донор измененный экземпляр класса (игнорируя параметры с метками), после этого уничтожаю экземпляр класса и скрипт возвращается к исходной точке. Верно мыслю?
|
Ответ: Передача переменной в метод
Ну я бы не стал создавать экземпляры каждый раз, иначе будет работать сборщик мусора. Можно сделать один такой объект и его переиспользовать.
Вообще я не смог представить задачу, в которой это все необходимо в такой форме) Вероятно есть решение проще... |
Ответ: Передача переменной в метод
хочу просто оптимизировать управление юнитом, у меня в зависимости от команды (управление нестандартное, стратегически ориентированное, поэтому передвижением юнита будет управлять скрипт а не банальные WSAD) передаются (разными способами) параметры "маршрута" и "действий" по которым должен передвигаться юнит. Сам скрипт передвижение унифицирован и в зависимости от поступающих команд двигает юнит определенным образом.
Я понимаю что это все прекрасно реализуется огородом if..else но не хочу, понимаю что можно сделать оптимизацию и хочу ее натйти чтобы в перспективе использовать полученный опыт для других скриптов. |
Ответ: Передача переменной в метод
Может для этого просто юнита унаследовать от некоего интерфейса, а скрипт передвижения будет пользоваться интерфейсом для перемещения юнита.
|
Ответ: Передача переменной в метод
Цитата:
Код:
public int Check(params int[] inp) Цитата:
Код:
a = 2 |
Часовой пояс GMT +4, время: 06:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot