c# - 新来的,需要帮助才能“行动”一次
问题描述
我有一个游戏代码,正在工作和做: *当瓷砖被接受时,在地砖中生成一只动物,但在所有接受的瓷砖中都做。我希望脚本只执行一次,这里的代码:
public static void Generate( Rectangle2D region )
{
int OakTree = 0x12B9;
for ( int rx = 0; rx < region.Width; ++rx )
{
for ( int ry = 0; ry < region.Height; ++ry )
{
int vx = rx + region.X;
int vy = ry + region.Y;
StaticTile[] tiles = m_Map.Tiles.GetStaticTiles( vx, vy );
for ( int i = 0; i < tiles.Length; ++i )
{
StaticTile tile = tiles[i];
int id = tile.ID;
id &= 0x3FFF;
int z = tile.Z;
if ( IsRock( id ) )
{
AddAnimalSpawner( vx + 1, vy, z );
}
}
}
}
}
将其简化为一次的正确方法是什么?我认为问题是for ( int i = 0; i < tiles.Length; ++i )
。谢谢!
解决方案
如果我对您的理解正确,您只想打AddAnimalSpawner
一次电话。
您可以简单地使用break
关键字。( https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/break ) 返回外部循环或return
退出Generate(Rectangle2D region)
函数。
例子:
for ( int i = 0; i < tiles.Length; ++i )
{
StaticTile tile = tiles[i];
int id = tile.ID;
id &= 0x3FFF;
int z = tile.Z;
if ( IsRock( id ) )
{
AddAnimalSpawner( vx + 1, vy, z );
break;
}
}
或者
for ( int i = 0; i < tiles.Length; ++i )
{
StaticTile tile = tiles[i];
int id = tile.ID;
id &= 0x3FFF;
int z = tile.Z;
if ( IsRock( id ) )
{
AddAnimalSpawner( vx + 1, vy, z );
return;
}
}
推荐阅读
- java - 如何在android中获取弹出菜单的高度和宽度?
- r - BatchGetSymbols 中缺少值和假期 - 已更新
- flask - 如何连接到远程服务器?
- powershell - Powershell - 允许用户退出或继续脚本
- java - 当参数以另一个顺序出现时,它是方法重载吗?
- html - 是否可以使用 react-native-render-html 导航到页内 URL 片段子资源作为实现浏览器行为?
- android - 如何使用改造发布带有标题的数组列表?
- python - 从 Jupyter Notebook 文件夹中的图像创建 PDF
- javascript - Python 到 chart.js
- chef-infra - 厨师在厨师客户端运行期间仍在寻找已删除的食谱