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 ()
    {
    }

Unity对象总是在0,0,0实例化

看起来radius还没有设置值,所以你的for循环只运行一次。

由于xz从0开始,并且它们都只运行一次,因此对象的xz位置被设置为0。

我为我给你们这些了不起的人带来的所有麻烦感到抱歉。当然,我很无知,问题不在于我的地形生成脚本,而在于我的块脚本!!!!我一直在设置积木的位置,我非常愚蠢。谢谢!

试着这样做:

GameObject newBlock = Instantiate(block, v, Quaternion.identity) as GameObject;
newBlock.transform.position = v;

我不知道这是否会解决你的问题,我也不知道这是否是一个错误的实例化方法,或者如果这是一个误解,但每次我试图实例化一个UI元素,我需要重置的位置(和比例)在相同的方式如上。从来没有尝试过立方体,但有了UI,它就完成了工作。