第二次实例化预制件时,为什么会出现错误?

问题描述

当我尝试向实例化的游戏对象添加预制时,出现错误:

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

当我第一次调用此脚本时,一切正常。有很多类似的问题和答案。但是,我无法解决他们的问题。

感谢您的帮助:)

GameObject coralWoodBundle = Resources.Load("Base/coral_wood_bundle") as GameObject;
GameObject woodlBundle = Instantiate(coralWoodBundle) as GameObject;
woodlBundle.transform.SetParent(this.gameObject.transform);

相关脚本

public class FallingWoodPackScript: MonoBehaviour
{
    public List<FallingWoodScript> fallingWoodScripts;

    public void Start()
    {
        RefillWood();
    }

    public void RefillWood()
    {
        GameObject coralWoodBundle = Resources.Load("Base/coral_wood_bundle") as GameObject;
        GameObject woodlBundle = Instantiate(coralWoodBundle) as GameObject;
        woodlBundle.transform.SetParent(this.gameObject.transform);
        woodlBundle.transform.localPosition = new Vector3(1f,2.7f,0);
        woodlBundle.transform.localRotation = Quaternion.Euler(new Vector3(0,-90));
        fallingWoodScripts = new List<FallingWoodScript>();
        foreach (Transform child in woodlBundle.transform)
        {
            fallingWoodScripts.Add(child.GetComponent<FallingWoodScript>());
        }
    }
}

解决方法

我很早以前就遇到了这个错误,我认为它的措辞有点误导。

也许您这样更好地理解它:

将父级设置为 TO 处于预制状态的转换被禁用,以防止数据损坏

我的猜测是,您通过脚本调用FallingWoodPackScriptthis的{​​{1}}参考(= RefillWood)实际上是 Prefab参考,因此Start就是错误提示this.gameObject.transform

确保仅在场景中的实际实例上调用a transform which resides in a prefab(或RefillWood)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...