unity error: Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption
unity error: Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption
我想动态创建 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 的父级。你运行变成的问题。您要设置为父游戏对象和目标(子)游戏对象都不应是预制件。
如果您的 UI 不复杂,我会完全避免这样做,而只是使用 DefaultControls
动态创建 UI。请参阅 this post,其中包含许多有关如何使用 DefaultControls
创建 UI 控件的示例。
我想动态创建 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 的父级。你运行变成
如果您的 UI 不复杂,我会完全避免这样做,而只是使用 DefaultControls
动态创建 UI。请参阅 this post,其中包含许多有关如何使用 DefaultControls
创建 UI 控件的示例。