当我尝试将预制组件添加到实例化的游戏对象时,出现错误:
禁用设置驻留在预制中的转换的父级以防止数据损坏
当我第一次调用此脚本时,一切正常。有很多类似的问题和答案。但是,我无法解决他们的问题。
谢谢您的帮助 :)
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, 0, -90));
fallingWoodScripts = new List<FallingWoodScript>();
foreach (Transform child in woodlBundle.transform)
{
fallingWoodScripts.Add(child.GetComponent<FallingWoodScript>());
}
}
}
我很早以前就遇到了这个错误,我认为它的措词有点误导。
也许您这样理解得更好:
设置父TO的变换是存在于预制被禁用,以防止数据损坏
我的猜测是,您正在调用或通过脚本打开的FallingWoodPackScript
引用(= this
)实际上是Prefab引用,因此就像错误所言。RefillWood
Start
this.gameObject.transform
a transform which resides in a prefab
确保仅在场景中的实际实例上调用RefillWood
(或Start
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句