在画布内实例化预制件

Gro*_*ion 2 c# canvas unity-game-engine

我需要在画布内实例化一个预制件,已经尝试了几种解决方案,但没有一个有效。你能帮我吗?

这是我的脚本:

    class Smoke1 : MonoBehaviour
    {
        public GameObject myPrefab;
        public GameObject canvasObject;

        void Start()
        {
           Instantiate(myPrefab, new Vector3(0, -25, 90), Quaternion.Euler(-90, 0, 0));
           myPrefab.transform.SetParent(canvasObject.transform, false);
           myPrefab.transform.localScale = new Vector3(1, 1, 1);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个:

myPrefab.transform.parent = canvasObject.transform;
Run Code Online (Sandbox Code Playgroud)

但也没有奏效。预制件实例在画布外部启动。这是我的层次结构: 在此输入图像描述 你有什么主意吗?

Alo*_*lox 5

请尝试使用此代码。

我已经尝试过你的代码,它向我抛出了以下错误消息:

禁用设置驻留在预制件中的变换的父级以防止数据损坏。

using UnityEngine;

public class Smoke1 : MonoBehaviour
{
    public GameObject myPrefab;
    public GameObject canvasObject;

    void Start()
    {
        GameObject newSmoke = Instantiate(myPrefab, new Vector3(0, -25, 90), Quaternion.Euler(-90, 0, 0)) as GameObject;
        newSmoke.transform.SetParent(canvasObject.transform, false);
        newSmoke.transform.localScale = new Vector3(1, 1, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

您的主要问题是您试图设置 myPrefab 的 setParent ,这不是您创建的实例。