【问题标题】:Instantiating World Canvases实例化世界画布
【发布时间】:2021-09-09 23:40:15
【问题描述】:

我正在尝试实例化许多世界画布,但它给了我这个错误:

UnityEngine.UI.Text.Text()' 由于受到保护而无法访问 级别,UnityEngine.UI.Image.Image()' 是不可访问的,因为它 防护等级

我创建了一个包含设置为世界空间的画布的预制件,但我无法理解实例化它们的正确方法。这是脚本的副本:

public void PositionWorldCanvases ()
{

    for (int i = 0; i < vertices.Length; i++) {

         Canvas can = new Canvas();
         Text text = new Text();
         Image image = new Image();

        Instantiate (canvasManager, vertices[i], Quaternion.identity);
        can = canvasManager.GetComponentInChildren<Canvas> ();
        image = can.GetComponent<Image> ();
        text = image.GetComponent<Text> ();
        text.text = "Hello World";
    
    }
}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    不是实例化的问题,是构造的问题

    TextImage 具有 private 构造函数,因此不能使用 new 关键字在范围外创建它们,您必须使用 RectTransform 和 @ 手动将它们附加到空的 GameObject 987654327@ 组件。然后你实例化那个对象。

    【讨论】:

    • 超出范围是什么意思?我必须通过脚本或当我统一创建预制件时附加它们?我尝试了一些东西,但我不知道如何在实例化后与画布预制件进行通信。
    • 我的意思是 new Image() 只能从 Image 类本身内部声明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2016-11-26
    • 2010-11-23
    相关资源
    最近更新 更多