Unity中要删除预制体中的某个子游戏物体,需要先将该预制体UnPack,然后调用DestroyImmediate删除GameObeject,然后再保存预制体。这其实挺麻烦的,因为有时你拿到的gameObject是Asset中的资源,将预制体实例化后不好找到实例中对应的gameObject,拿名字找可以,但还是会有重名的风险。
我的方法无论传入的gameObject是处于场景中的实例还是处于Asset中都可以删除:
//删除预制体中的某个GameObject,不论其是不是在场景中的instance
public static void DestroyGameObjectInPrefab(GameObject go)
{
if (PrefabUtility.IsPartOfAnyPrefab(go))
{
GameObject instance = null;
GameObject deleteObj = null;