c# - 在 Canvas 内实例化预制件

标签 c# canvas unity-game-engine

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

这是我的脚本:

    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);
        }
    }
}

我也尝试过这个:

myPrefab.transform.parent = canvasObject.transform;

但也没有成功。预制件实例在 Canvas 外部启动。 这是我的层次结构: enter image description here 你有什么想法吗?

最佳答案

请尝试使用此代码。

我尝试过你的代码,但它向我抛出了此错误消息:

Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption.

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);
    }
}

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

关于c# - 在 Canvas 内实例化预制件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40631588/

相关文章:

unity-game-engine - Unity 语音聊天 2017.2

c# - Android 找不到文件路径 Unity 5

Javascript - HTML Canvas 上的 Gecko 边框半径自适应(CSS border-radius)

c# - ServiceStack 使用对象序列化和反序列化字典

c# - C# 中的构造函数

c# - 如何解决 DateTimeInvalidLocalFormat 错误 : "A UTC DateTime is being converted to text in a format that is only correct for local times."?

javascript - 使用键盘箭头使用 three.js 进行第一人称模拟

reactjs - Canvas :用鼠标绘制形状时重新绘制整个 Canvas 会导致卡顿

c# - WaitForSeconds() 协程导致游戏无限期卡住(已编辑)

c# - 如何将多个 MethodCallExpressions 加入一个 Expression?