首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参数2的问题:无法从“UnityEngine.Vector3”转换为“UnityEngine.Transform”

参数2的问题:无法从“UnityEngine.Vector3”转换为“UnityEngine.Transform”
EN

Stack Overflow用户
提问于 2022-08-18 10:21:22
回答 2查看 180关注 0票数 0

我一直在与youtube教程合作这个项目,但我在代码方面遇到了一些问题。这是我的第一个项目,我对编码一无所知。这是我的代码:

代码语言:javascript
运行
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlatformManager : MonoBehaviour
{
    [SerializeField]
    private GameObject[] _platformPrefabs;

    // Start is called before the first frame update
    void Start()
    {
        for (int i = 0; 1 < _platformPrefabs.Length; i++)
        {
            global::System.Object value = Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12));
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
EN

回答 2

Stack Overflow用户

发布于 2022-08-18 10:58:03

您使用两个参数调用Instantiate,这两个参数仅用于设置父参数,即Transform

您要做的是使用三个参数调用它,并传递一个Quaternion进行旋转。如果您只想要默认的旋转,请传递Quaternion.identity

代码语言:javascript
运行
复制
Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12), Quaternion.identity);
票数 0
EN

Stack Overflow用户

发布于 2022-08-18 10:59:33

Instantiate是一个具有许多重载的函数,所以编译器期望得到与您提供的内容不同的东西,这一点可能不会马上显现出来。

就你而言:

代码语言:javascript
运行
复制
Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12));

您使用两个参数,这意味着重写

代码语言:javascript
运行
复制
public static Object Instantiate(Object original, Transform parent); 

是使用的。

您可能想使用:

代码语言:javascript
运行
复制
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation); 

您可以在代码中这样做,只需添加Quaternion.identity,使违规行读到:

代码语言:javascript
运行
复制
global::System.Object value = Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12), Quaternion.identity);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73401361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档