#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) Мог ошибиться, сам не проверял
Комментариев нет:
Отправить комментарий