问题描述
当我尝试向实例化的游戏对象添加预制时,出现错误:
禁用设置驻留在预制件中的转换的父级以防止数据损坏
当我第一次调用此脚本时,一切正常。有很多类似的问题和答案。但是,我无法解决他们的问题。
感谢您的帮助:)
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 处于预制状态的转换被禁用,以防止数据损坏
我的猜测是,您通过脚本调用FallingWoodPackScript
或this
的{{1}}参考(= RefillWood
)实际上是 Prefab参考,因此Start
就是错误提示this.gameObject.transform
。
确保仅在场景中的实际实例上调用a transform which resides in a prefab
(或RefillWood
)。