我有這個代碼片段,希望讓它更干凈(順便說一句,這是統一的 c#):
WallObj[] wallObjs = new WallObj[4];
for (int i = 0; i < 4; i )
{
wallObjs[i] = transform.GetChild(i 1).GetComponent<WallObj>();
}
wallObjs[0].setWallState((int)roomData.entryInfo.x);
wallObjs[1].setWallState((int)roomData.entryInfo.y);
wallObjs[2].setWallState((int)roomData.entryInfo.z);
wallObjs[3].setWallState((int)roomData.entryInfo.w);
foreach (WallObj wall in wallObjs)
{
wall.adjacents(roomData.dunGrid, roomData.abstRoom);
}
最好,我希望它看起來像:
WallObj[] wallObjs = new WallObj[4];
WallObj[] wallObjs = new WallObj[4];
for (int i = 0; i < 4; i )
{
wallObjs[i] = transform.GetChild(i 1).GetComponent<WallObj>();
wallObjs[i].setWallState((int)roomData.entryInfo.i);
}
foreach (WallObj wall in wallObjs)
{
wall.adjacents(roomData.dunGrid, roomData.abstRoom);
}
uj5u.com熱心網友回復:
UnityVector4完全按照您的描述支持索引運算子。
只需使用(int)roomData.entryInfo[i].
話雖如此,從浮點欄位中提取整數有點笨拙,如果您真的不存盤浮點數,您可以考慮實作自己的Vector4Int型別,該型別以整數為后盾并支持索引運算子。
uj5u.com熱心網友回復:
您可以通過 Index檢查Access 屬性,它可以幫助您使用 for 回圈索引訪問roomData .entryInfo。
但我認為為了“更干凈”而降低代碼的可讀性并不是一個好主意
uj5u.com熱心網友回復:
據我所知,您無法像使用陣列一樣傳入變數來訪問向量的特定組件。您的問題的一種可能解決方案可能是在wallObjs類中使用一個方法來完成您正在做的事情,但有點隱藏,但這取決于您需要做多少。不幸的是,如果您只這樣做一次,那么您可能只需要解決它并處理丑陋的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/392541.html
上一篇:在UnityAndroid版本中,當游戲處于非活動狀態然后喚醒它時,黑色背景閃爍藍光
下一篇:非常非常粗略的講解指標結構體
