有没有一种方法将GameObjects放置在网格模式中(类似于tilemap)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法将GameObjects放置在网格模式中(类似于tilemap)?相关的知识,希望对你有一定的参考价值。

我对团结比较陌生,所以如果我说这句话很奇怪。

我正在尝试创建一个大的区域,每个“tile”都有机会产生一个随机对象。我让它为一个空的GameObject工作,但是制作一个大的网格需要一遍又一遍地复制/粘贴同一个对象并设置它的位置。

答案

它在Official Documentation

将一堆对象放置在特定模式中让我们假设您想要将一堆对象放置在网格或圆形图案中。传统上,这可以通过以下任一方式完成:

完全从代码构建对象。这很乏味!从脚本输入值既慢又不直观,不值得麻烦。制作完全装配的对象,复制它并在场景中多次放置它。这很乏味,并且将对象准确地放置在网格中很困难。因此,请使用Preanti选择Instantiate()!我们认为您了解为什么Prefabs在这些场景中非常有用。以下是这些方案所需的代码:

// Instantiates a prefab in a circle

public GameObject prefab;
public int numberOfObjects = 20;
public float radius = 5f;

void Start() 
{
    for (int i = 0; i < numberOfObjects; i++)
    {
        float angle = i * Mathf.PI * 2 / numberOfObjects;
        Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius;
        Instantiate(prefab, pos, Quaternion.identity);
    }
}



// Instantiates a prefab in a grid

public GameObject prefab;
public float gridX = 5f;
public float gridY = 5f;
public float spacing = 2f;

void Start()
{
    for (int y = 0; y < gridY; y++) 
    {
        for (int x = 0; x < gridX; x++)
        {
            Vector3 pos = new Vector3(x, 0, y) * spacing;
            Instantiate(prefab, pos, Quaternion.identity);
        }
    }
} 

以上是关于有没有一种方法将GameObjects放置在网格模式中(类似于tilemap)?的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种快速的方法将点投影到某个网格上?

哪个更适合tkinter网格,放置单个项目或循环遍历列表来放置它们?

unity如何快速选择网格筛除空对象

无法将 6 个 div 放置为 2x3 垂直网格

将多个元素同时放置到一行

Unity不是版本控制GameObjects的Inspector设置