作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Isometric Tilemap 来制作我的游戏 map 。
我正在使用统一 2018 3.5f 版本。
但是每个指南都说只使用调色板,但是我的游戏tilemap有点
动态的。所以我可以在运行时(动态地)在 tilemap 中添加、更改和删除图 block 。
而且我必须从 map xml 文件中读取平铺数据。所以我可以通过编程方式添加瓷砖。
在引用中有一个'setTile()'方法。但是没有关于使用它的适当示例。
我是否应该先创建平铺游戏对象并将其拖到预制文件夹以使其成为平铺预制件。我必须像这样使用?
setTile(position , TilePrefab.Instantiate());
最佳答案
这似乎根本不是一个“新手”问题。很明显,您只想以编程方式而不是通过编辑器来放置图 block 。
我遇到了同样的问题,因为我想根据地形生成器填充我的图 block 。令我惊讶的是,文档在这方面如此缺乏,而且那里的每个教程似乎都假设您正在手工创作您的磁贴布局。
这对我有用:
第一个片段没有回答您的问题,但这是我的测试代码,用于以棋盘图案放置交替的瓷砖(我只有两个瓷砖,“水”和“土地”)
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
Vector3Int p = new Vector3Int(x,y,0);
bool odd = (x + y) % 2 == 1;
Tile tile = odd ? water : land;
tilemap.SetTile(p, tile);
}
}
Tile
的实例,我发现有两种不同的方法有效:
MonoBehaviour
编写代码以编程方式生成平铺布局的类,公开一些公共(public)属性:
public Tile water;
public Tile land;
Assets/Resources/Textures/water.png
的 128x128 纹理加载和创建 Tile 的方法。 :
Tile water = new Tile();
Texture2D texture = Resources.Load<Texture2D>("Textures/water") as Texture2D;
water.sprite = Sprite.Create(texture,
new Rect(0, 0, 128, 128), // section of texture to use
new Vector2(0.5f, 0.5f), // pivot in centre
128, // pixels per unity tile grid unit
1,
SpriteMeshType.Tight,
Vector4.zero
);
关于unity3d - 如何在tilemap中动态设置tile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888987/
我是一名优秀的程序员,十分优秀!