+-

我一直在考虑尝试创建一个RPG游戏,一个带有动作,拾取物品和开门的简单游戏.
我已经考虑了很长时间了,关于瓦片地图引擎,但是我找不到任何有效的方法:/
基本上我想完成的是我有一个枚举,例如:
public enum tileSort { Dirt, Grass, Stone, Empty }
当引擎在数组中运行时,该数组将具有0、1等,我正在考虑一个switch语句,例如:
switch(tileSort)
{
case '0': tileList.Add(Content.Load<Texture2D>("Tiles/grass"))
}
问题是我对如何实现这一目标一无所知,我所能创建的只是一个引擎,引擎不断运行并根据您首先加载到游戏中的内容而生成.
我知道这很令人困惑,因为我不善于解释自己.
提前致谢.
最佳答案
您可以使用一些工具来帮助您:
> http://jdevh.com/2012/06/01/griddy2d/
> http://github.com/zachmu/tiled-xna
> http://xnafantasy.wordpress.com/2008/11/22/xna-map-editor-version-30-released/
我相信您还能找到很多其他人.
关于您编写的代码片段,您不想调用
Content.Load<Texture2D>("Tiles/grass")
单个纹理多次.每个纹理仅加载一次,并多次打印相同的资源.您可能会有这样的事情:
var tileList = new List<Texture2D>();
string[] tiles = { "dirt", "grass", "stone", "empty" };
foreach (var s in tiles) {
tileList.Add(Content.Load<Texture2D>("Tiles/" + s));
}
现在,每个纹理仅加载一次,您可以使用tileList [index]访问它.
下一步是在屏幕上打印图块.我假设您已将图块索引中的图块加载到二维数组中.
int[,] tileMap = {{1, 2, 0}, {0, 1, 2}, {3, 3, 1},};
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
spriteBatch.Draw(tileList[tileMap[i, j]], new Vector2D(50*i, 50*j), Color.White);
// Assuming the tiles are 50x50 pixels
本教程将详细介绍您想要的内容:http://www.xnaresources.com/?page=Tutorial:TileEngineSeries:1
点击查看更多相关文章
转载注明原文:c#-从数组生成切片地图 - 乐贴网