public void OnEnable() { widget = target as GWidget; if (!Application.isPlaying) { if (widget.GetComponentInParent <GFrame>()) { if (widget.name != "__preview__") { Object parentObject = PrefabUtility.GetPrefabParent(widget); if (parentObject) { string path = AssetDatabase.GetAssetPath(parentObject); GWidget prefab = AssetDatabase.LoadAssetAtPath <GWidget>(path); if (prefab) { //add prefab instance GameObject obj = new GameObject(widget.name); obj.AddComponent <RectTransform>(); GPrefabInstance gpi = obj.AddComponent <GPrefabInstance>(); gpi.prefab = prefab; obj.transform.SetParent(widget.transform.parent, false); obj.transform.SetSiblingIndex(widget.transform.GetSiblingIndex()); gpi.Instantiate(); GameObject.DestroyImmediate(widget.gameObject); } } } } } propertyList = InitExportPropertyList(); eventList = InitExportEventList(); exportToScriptList = InitExportToScriptList(); }