void GeneratePrefab(NestedPrefabData prefabData) { // Debug.Log("NestedPrefab::GeneratePrefab - prefabData " + prefabData.prefabPath + " "); Transform parent = GetHierarchyTransform(prefabData.hierarchyPathId); GameObject clone = prefabGenerator.GenerateFrom(prefabData.prefabPath); if (clone == null) { Debug.LogError("Error when trying to generate prefab " + prefabData.prefabPath + " !", this); } clone.transform.parent = parent; prefabData.CopyDataTo(clone.transform); // Recursive generation NestedPrefab nestedPrefab = clone.GetComponent <NestedPrefab>(); if (nestedPrefab != null) { nestedPrefab.prefabGenerator = prefabGenerator; nestedPrefab.GeneratePrefabs(false); // Avoid to ask permission twice } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); NestedPrefab nestedPrefab = target as NestedPrefab; if (nestedPrefab == null) { return; } if (!Application.isPlaying) { nestedPrefab.prefabGenerator = new DefaultPrefabGeneration(); } if (GUILayout.Button("Save Nested Prefabs")) { nestedPrefab.SavePrefabData(); } if (GUILayout.Button("Generate Prefabs")) { nestedPrefab.GeneratePrefabs(); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); NestedPrefab nestedPrefab = target as NestedPrefab; if (nestedPrefab == null) { return; } nestedPrefab.prefabGenerator = new DefaultPrefabGeneration(); if (GUILayout.Button("Save Nested Prefabs")) { nestedPrefab.SavePrefabData(); } if (GUILayout.Button("Revert Prefabs")) { nestedPrefab.GeneratePrefabs(); } if (nestedPrefab.prefabDetailsVisibility) { EditorGUILayout.Space(); EditorGUILayout.LabelField("List of Nested Prefabs:", EditorStyles.boldLabel); EditorGUILayout.Space(); for (int i = 0; i < nestedPrefab.nestedPrefabsData.Count; i++) { NestedPrefabData prefabData = nestedPrefab.nestedPrefabsData[i]; // GameObject prefabParent = PrefabUtility.GetPrefabParent(prefabData.prefabObject) as GameObject; // string prefabPath = AssetDatabase.GetAssetPath(prefabParent); EditorGUILayout.LabelField("" + i + ". " + prefabData.hierarchyPath + " from " + prefabData.prefabPath); // PrefabUtility.GetPropertyModifications } } }