我对编程很新,我需要一些优化方面的帮助.基本上我的方法的一部分做:
for(int i = 0; i < Tiles.Length; i++)
{
x = Tiles[i].WorldPosition.x;
y = Tiles[i].WorldPosition.y;
z = Tiles[i].WorldPosition.z;
Tile topsearch = Array.Find(Tiles,
search => search.WorldPosition == Tiles[i].WorldPosition +
new Vector3Int(0,1,0));
if(topsearch.isEmpty)
{
// DoMyThing
}
}
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一个比当前Tile高1个单位的瓷砖.我的问题是,对于整个方法,它需要0.1秒,这导致一个小的hick up .. Array.Find没有方法是0.01秒.
我也尝试了一个for循环,但仍然不是很好的结果,因为我还需要3个底部,左侧和右侧的检查.
有人可以帮助我,并指出我获得一些快速结果的方法吗?也许我应该选择像线程一样的东西?
您可以创建一个三维数组,这样您只需查看其中的内容即可在特定位置查找图块Tiles[x, y + 1, z].
然后,您可以在2个循环中遍历数据:一个用于构建Tiles,另一个用于执行上面代码中的检查,这将只是:
for(int i = 0; i < Tiles.Length; i++)
{
Tile toFind = Tiles[Tile[i].x, Tile[i].y + 1, Tile[i].z];
if (toFind != null) ...
}
Run Code Online (Sandbox Code Playgroud)
您必须对数组进行维度,以便在y中有1个额外的行,这样Tiles[x, y + 1, z]就不会导致索引超出范围的异常.
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |