update
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
using System.Collections.Generic;
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
#endif
|
||||
using UnityEngine;
|
||||
|
||||
namespace Unity.FPS.Game
|
||||
{
|
||||
[ExecuteInEditMode]
|
||||
public class PrefabReplacerOnInstance : MonoBehaviour
|
||||
{
|
||||
public GameObject TargetPrefab;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
List<GameObject> allPrefabObjectsInScene = new List<GameObject>();
|
||||
foreach (Transform t in GameObject.FindObjectsByType<Transform>(FindObjectsInactive.Exclude, FindObjectsSortMode.None))
|
||||
{
|
||||
if (PrefabUtility.IsAnyPrefabInstanceRoot(t.gameObject))
|
||||
{
|
||||
allPrefabObjectsInScene.Add(t.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (GameObject go in allPrefabObjectsInScene)
|
||||
{
|
||||
GameObject instanceSource = PrefabUtility.GetCorrespondingObjectFromSource(go);
|
||||
|
||||
if (instanceSource == TargetPrefab)
|
||||
{
|
||||
transform.SetParent(go.transform.parent);
|
||||
transform.position = go.transform.position;
|
||||
transform.rotation = go.transform.rotation;
|
||||
transform.localScale = go.transform.localScale;
|
||||
|
||||
// Undo.Register
|
||||
Undo.DestroyObjectImmediate(go);
|
||||
|
||||
Debug.Log("Replaced prefab in scene");
|
||||
DestroyImmediate(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user