Unity对象总是在0,0,0实例化
本文关键字:实例化 对象 Unity | 更新日期: 2023-09-27 18:06:49
我正在尝试在我的Minecraft克隆中制作简单的地形生成。每当我尝试运行脚本时,它都会将所有实例化的对象放在位置0,0,0。下面是我生成地形的c#代码:
using UnityEngine;
using System.Collections;
public class TerrainGen : MonoBehaviour {
public int radius;
public int maxHeight;
public GameObject block;
void Start ()
{
for (float x = 0; x < radius; x+=1)
{
for (float z = 0; z < radius; z+=1)
{
float y = Random.Range(1, maxHeight);
Vector3 v = new Vector3(x, y, z);
GameObject newBlock = Instantiate(block, v, Quaternion.identity) as GameObject;
Debug.Log("Block's Position: " + newBlock.transform.position + " | Wanted Position: " + v);
}
}
}
void Update ()
{
}
看起来radius
还没有设置值,所以你的for循环只运行一次。
由于x
和z
从0开始,并且它们都只运行一次,因此对象的x
和z
位置被设置为0。
我为我给你们这些了不起的人带来的所有麻烦感到抱歉。当然,我很无知,问题不在于我的地形生成脚本,而在于我的块脚本!!!!我一直在设置积木的位置,我非常愚蠢。谢谢!
试着这样做:
GameObject newBlock = Instantiate(block, v, Quaternion.identity) as GameObject;
newBlock.transform.position = v;
我不知道这是否会解决你的问题,我也不知道这是否是一个错误的实例化方法,或者如果这是一个误解,但每次我试图实例化一个UI元素,我需要重置的位置(和比例)在相同的方式如上。从来没有尝试过立方体,但有了UI,它就完成了工作。