You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改C#游戏代码使动物生成逻辑仅执行一次

修改方案

你只需要新增一个状态标记位,触发一次生成后直接终止所有循环即可,修改后的完整代码如下:

public static void Generate( Rectangle2D region )
{
    int OakTree = 0x12B9;
    // 新增标记位,记录是否已经完成生成
    bool hasSpawned = false;
    
    for ( int rx = 0; rx < region.Width && !hasSpawned; ++rx )
    {
        for ( int ry = 0; ry < region.Height && !hasSpawned; ++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 && !hasSpawned; ++i )
            {
                StaticTile tile = tiles[i];

                int id = tile.ID;
                id &= 0x3FFF;
                int z = tile.Z;

                if ( IsRock( id ) )
                {
                    AddAnimalSpawner( vx + 1, vy, z );
                    // 生成完成后标记为true,所有循环都会在下一次判定时终止
                    hasSpawned = true;
                }
            }
        }
    }
}

逻辑说明

  • 新增的hasSpawned变量初始为false,表示还未执行过生成操作
  • 三个循环的终止条件都新增了&& !hasSpawned判定,只要标记位变为true,循环就会立即终止
  • 第一次匹配到符合条件的地砖完成生成后,标记位会被置为true,后续所有地砖的判定逻辑都不会再执行

内容的提问来源于stack exchange,提问作者Kiko Fernandez Ruiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:06:01