当在编辑器界面中拖拽预制件的时候,可能会出现无法编辑的情况。这种情况一般是因为预制件被锁定或者已设置为不可编辑的原因造成的。下面是解决该问题的代码示例:
//获取选择的物体
GameObject selectedObj = Selection.activeGameObject;
//检查是否为预制件
if (PrefabUtility.IsAnyPrefabInstanceRoot(selectedObj))
{
//获取对应的预制件
GameObject root = PrefabUtility.GetCorrespondingObjectFromSource(selectedObj);
//检查是否为可编辑类型
if (PrefabUtility.IsPartOfPrefabInstance(root))
{
PrefabAssetType assetType = PrefabUtility.GetPrefabAssetType(root);
if (assetType != PrefabAssetType.NotAPrefab && assetType != PrefabAssetType.MissingAsset)
{
//若也未被锁定,则可进行修改
if (!PrefabUtility.IsLocked(root))
{
PrefabUtility.UnpackPrefabInstance(selectedObj, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction);
}
}
}
}
这段代码可以检查选中的物体是否是可编辑预制件,若为可编辑的预制件且没有被锁定,则可轻松进行编辑。