Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单游戏-生成平铺贴图_C#_.net_Xna_Monogame - Fatal编程技术网

C# 单游戏-生成平铺贴图

C# 单游戏-生成平铺贴图,c#,.net,xna,monogame,C#,.net,Xna,Monogame,我正在创建一个2D游戏,我希望能够绘制分幅来创建我的游戏世界。我创建了一个列表,如下所示: static private List<Rectangle> tiles = new List<Rectangle>(); public const int TileWidth = 50; public const int TileHeight = 50; public static void initialise(Texture2D tileTexture) {

我正在创建一个2D游戏,我希望能够绘制分幅来创建我的游戏世界。我创建了一个
列表
,如下所示:

static private List<Rectangle> tiles = new List<Rectangle>();

public const int TileWidth = 50;
public const int TileHeight = 50;

public static void initialise(Texture2D tileTexture)
{
        texture = tileTexture;
        tiles.Clear();

        tiles.Add(new Rectangle(0, 267, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1575,795, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1315,267, TileWidth, TileHeight));
        tiles.Add(new Rectangle(1051,797, TileWidth, TileHeight));
    }
static private List tiles=new List();
公共常数int TileWidth=50;
公共常数int TileHeight=50;
公共静态无效初始化(纹理2D瓷砖纹理)
{
纹理=瓷砖纹理;
tiles.Clear();
添加(新矩形(0267,平铺宽度,平铺高度));
添加(新矩形(1575795,平铺宽度,平铺高度));
添加(新矩形(1315267,平铺宽度,平铺高度));
添加(新矩形(1051797,平铺宽度,平铺高度));
}

我试图在我的游戏世界中生成磁贴,这种方式允许我使用数组手动选择放置每个磁贴的位置,但是我在这方面遇到了一些困难。

您可以像这样绘制矩形列表

for(int i = 0; i < tiles.Count(); i++)
    spriteBatch.Draw(tileImage, tiles[i], Color.White);
for(int i=0;i

请提供更多关于您的错误/挣扎的信息,我将提供更好的答案。

您可以这样绘制矩形列表

for(int i = 0; i < tiles.Count(); i++)
    spriteBatch.Draw(tileImage, tiles[i], Color.White);
for(int i=0;i

请提供更多关于您的错误/挣扎的信息,我将提供更好的答案。

我猜您想要一个双数组作为磁贴?我会继续猜测你在这里想要达到的目标

也许是这样的:

private static Rectangle[][] tiles;
private const int worldWidth = 50;
private const int worldDepth = 50;

public static void Initialize(Texture2D tileTexture)
{
    // Initialize game table
    tiles = new Rectangle[worldWidth][];
    for (int l = 0; l < worldWidth; l++)
    {
        tiles[l] = new Rectangle[worldDepth];
    }

    // Fill rectangles in for every tile
    for(int i = 0; i < worldWidth; i++)
    {
        for (int k = 0; k < worldDepth; k++)
        {
            // Tile (0,0): x = 0, y = 0
            // Tile (0,1): x = 0, y = 50
            // and so on...
            tiles[i][k] = new Rectangle(i * TileWidth, k * TileHeight, TileWidth, TileHeight);
        }
    }
}
私有静态矩形[][]分幅;
私有常数int worldWidth=50;
私人常数int worldDepth=50;
公共静态void初始化(Texture2D tileTexture)
{
//初始化游戏表
平铺=新矩形[worldWidth][];
对于(int l=0;l

也许有更好的方法可以做到这一点,但这是一个简单的解决方案,应该很容易理解。

我猜你想要一个双阵列的瓷砖?我会继续猜测你在这里想要达到的目标

也许是这样的:

private static Rectangle[][] tiles;
private const int worldWidth = 50;
private const int worldDepth = 50;

public static void Initialize(Texture2D tileTexture)
{
    // Initialize game table
    tiles = new Rectangle[worldWidth][];
    for (int l = 0; l < worldWidth; l++)
    {
        tiles[l] = new Rectangle[worldDepth];
    }

    // Fill rectangles in for every tile
    for(int i = 0; i < worldWidth; i++)
    {
        for (int k = 0; k < worldDepth; k++)
        {
            // Tile (0,0): x = 0, y = 0
            // Tile (0,1): x = 0, y = 50
            // and so on...
            tiles[i][k] = new Rectangle(i * TileWidth, k * TileHeight, TileWidth, TileHeight);
        }
    }
}
私有静态矩形[][]分幅;
私有常数int worldWidth=50;
私人常数int worldDepth=50;
公共静态void初始化(Texture2D tileTexture)
{
//初始化游戏表
平铺=新矩形[worldWidth][];
对于(int l=0;l

也许有更好的方法可以做到这一点,但这是一个简单的解决方案,应该很容易理解。

更明确一点,描述你的问题并展示你的尝试。更明确一点,描述你的问题并展示你的尝试。是的,我创建了一个名为“瓷砖”的矩形列表从我的精灵表中保存我的瓷砖的位置。我想画一个二维阵列的瓷砖,但只在地图的某些部分,因为我的目标是一个地下城爬虫/迷宫风格。非常感谢您的帮助。是的,我已经创建了一个名为“tiles”的矩形列表,并从我的sprite表中保存了我的tiles的位置。我想画一个二维阵列的瓷砖,但只在地图的某些部分,因为我的目标是一个地下城爬虫/迷宫风格。非常感谢您的帮助。