在游戏开始时尝试创建简单圈子游戏对象的网格。每个圆之间的空间需要为1.41和2D中的1.34。因此,通过一些小数学,我会认为这个脚本会相对于初始参考对象创建这个网格。
然而,在编辑器中单击播放时,游戏只会冻结,我必须使用命令提示符杀死Unity。
有什么想法吗?
以下是代码:
void Awake()
{
Transform transform = gameObject.GetComponent<Transform>();
for (float i = 1; i < 8; i++)
{
for (float j = 1; j<8;j++)
{
Instantiate(gameObject, transform.position + new Vector3(i * 1.41f, 0, j * 1.34f), new Quaternion(0, 0, 0, 0));
}
}
}
答案 0 :(得分:2)
void Awake()
{
Transform transform = gameObject.GetComponent<Transform>();
for (float i = 1; i < 8; i++)
{
for (float j = 1; j<8;j++)
{
Instantiate(gameObject, transform.position + new Vector3(i * 1.41f, 0, j * 1.34f), new Quaternion(0, 0, 0, 0));
}
}
}
查看您的Instantantiate,您正在使用gameObject。这是对持有该脚本的游戏对象的引用。所以你似乎正在做的是实例化该对象的克隆。新创建的对象也会触发循环,这将启动一个新的创建过程,依此类推。
总而言之,你创造了一个无限循环。您需要创建其他东西的实例,最有可能是瓷砖预制件。
public GameObject myTilePrefab;
void Awake()
{
Transform transform = gameObject.GetComponent<Transform>();
for (float i = 1; i < 8; i++)
{
for (float j = 1; j<8;j++)
{
Instantiate(myTilePrefab, transform.position + new Vector3(i * 1.41f, 0, j * 1.34f), new Quaternion(0, 0, 0, 0));
}
}
}