#c_sharp #unity3d
В коде много вот такого, причем когда обрабатывается одна ось - не обязательно должна обрабатыватся другая. AxisX = ((currentTouchPos.x - startTouchPos.x) / workZoneInPixX); AxisY = ((currentTouchPos.y - startTouchPos.y) / workZoneInPixY); Отличаются только оси и чуть чуть название переменных. Как передать это в метод, чтобы обрабатывать все похожие запросы этим? Чтобы сократить и избежать дублирования кода Вижу это как то примерно вот так float FormatXY(x_or_y) Axis = ((currentTouchPos.x_or_y - startTouchPos.x_or_y) / workZoneInPixX_or_Y); return Axis; Но понятно, что таким образом я просто передам значения x или y, а мне бы передать именно параметр x компонент вектора или y компонент вектора, и как то подставить это в методе. Чтобы в результате, код AxisX = FormatXY(X) Был эквивалентен коду AxisX = ((currentTouchPos.x - startTouchPos.x) / workZoneInPixX); А код AxisX = FormatXY(Y) Был эквивалентен коду AxisY = ((currentTouchPos.y - startTouchPos.y) / workZoneInPixY);
Ответы
Ответ 1
На беглый взгляд серебренной пули тут не найдешь. Думаю лучше написать две функции, типа CurrentTouchX() и CurrentTouchY() - куда запихать соответствующие выражения. Код сразу станет почище. Не думаю, что стоит городить что-то большее, ну может кто и придумает решение поинтереснее.Ответ 2
Не судите строго первое что на ум пришло. enum formatAx{ "X", "Y" } float FormatXY(formatAx type){ if (type == formatAx.x) { return = ((currentTouchPos.x - startTouchPos.x) / workZoneInPixX); }else { return = ((currentTouchPos.y - startTouchPos.y) / workZoneInPixY); } } Вызов будет таким: AxisX = FormatXY(formatAx.X) Мог ошибиться, сам не проверял
Комментариев нет:
Отправить комментарий