gpt4 book ai didi

c# - 统一错误 : Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption

转载 作者:太空狗 更新时间:2023-10-30 01:30:17 29 4
gpt4 key购买 nike

我想动态创建 ui 按钮,

我有一个预制件,

代码如下:

  public class SFSConnect : MonoBehaviour {
SmartFox sfs;

public GameObject cnv1;
public GameObject potchPrf;
public Canvas fCanvas;
void Start () {
fCanvas = cnv1.GetComponent<Canvas> ();

Button ptf1 = potchPrf.GetComponent<Button> ();

Instantiate(ptf1,new Vector3 (0, 0, 10), Quaternion.identity);


potchPrf.transform.SetParent (fCanvas.transform);
}

}

我尝试了数千个帖子,但没有任何反应

最佳答案

问题可能来自 potchPrf.transform.SetParent (fCanvas.transform);,这意味着您正在尝试修改预制件。您无法通过代码更改预制件的父级。

也许您想设置实例化对象的父对象?

如果是这种情况,则将其存储在变量中

GameObject uiObj = Instantiate<GameObject>(ptf1,new Vector3 (0, 0, 10), Quaternion.identity);
uiObj.transform.SetParent (fCanvas.transform);

另外,不要试图让预制件成为 GameObject 的父级。你遇到了 this问题。您要设置为父游戏对象和目标(子)游戏对象都不应是预制件。


如果您的 UI 不复杂,我会完全避免这样做,而只是使用 DefaultControls 动态创建 UI。参见 this发布了很多关于如何使用 DefaultControls 创建 UI 控件的示例。

关于c# - 统一错误 : Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46063784/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com