3 回答

TA貢獻1804條經驗 獲得超2個贊
你很接近:
var snapOne as Grids.Snap(worldPosition, 1, plane);
var snapFour as Grids.Snap(worldPosition, 4, plane);
_gridPositionLastFrame = _buildState == BuildState.None ? snapOne : snapFour;
...但是Grids.Snap被調用了兩次,即使其中一個調用沒有被使用。在某些方法的情況下,這甚至可能會導致副作用。我建議提取出變化的部分:
var snapSize = _buildState == BuildState.None ? 1 : 4;
_gridPositionLastFrame = Grids.Snap(worldPosition, snapSize, plane);
這需要更少的邏輯重復。

TA貢獻1803條經驗 獲得超6個贊
我不知道你的GridSnap函數的簽名,但我會假設它看起來像:
TR GridSnap(T1, int, T2)
因此,您可以編寫如下代碼:
Func<TR> SnapOne = () => Grids.Snap(worldPosition, 1, plane);
Func<TR> SnapFour = () => Grids.Snap(worldPosition, 4, plane);
就在你的三元之上。

TA貢獻1851條經驗 獲得超5個贊
你也可以這樣做(對于 ref 和 out 類型的方法,這不起作用)
_gridPositionLastFrame = Grids.Snap(worldPosition, _buildState == BuildState.None ? 1: 4 ,plane);
- 3 回答
- 0 關注
- 236 瀏覽
添加回答
舉報