public override void OnInspectorGUI() { SceneSDF scenesdf = target as SceneSDF; GUILayout.Space(8.0f); scenesdf.name = EditorGUILayout.TextField("Name", scenesdf.name); GUILayout.Space(8.0f); bool executeflag = EditorGUILayout.Toggle("Execute in Editor", scenesdf.isEditor, new GUILayoutOption[0]); if (executeflag != scenesdf.isEditor) { scenesdf.isEditor = executeflag; scenesdf.living = false; scenesdf.StopAllCoroutines(); //scenesdf.Init(); } scenesdf.operationType = (BooleanType)EditorGUILayout.EnumPopup("Operation", scenesdf.operationType); scenesdf.operationA = (MeshFilter)EditorGUILayout.ObjectField("OperandA", scenesdf.operationA, typeof(MeshFilter), true); scenesdf.operationB = (MeshFilter)EditorGUILayout.ObjectField("OperandB", scenesdf.operationB, typeof(MeshFilter), true); GUILayout.Space(8.0f); scenesdf.McShader = (ComputeShader)EditorGUILayout.ObjectField("McShader", scenesdf.McShader, typeof(ComputeShader), true); scenesdf.SdfShader = (ComputeShader)EditorGUILayout.ObjectField("SdfShader", scenesdf.SdfShader, typeof(ComputeShader), true); GUILayout.Space(8.0f); if (GUILayout.Button("Update Mesh")) { scenesdf.ExecuteOnClick(); } if (GUILayout.Button("Save Mesh", new GUILayoutOption[0]))//Save Prefab { //string text = EditorUtility.SaveFilePanelInProject("Save Result", scenesdf.gameObject.name, "prefab", "Please select where do you want to save the result?"); string text = EditorUtility.SaveFilePanelInProject("Save Result", scenesdf.gameObject.name, "obj", "Please select where do you want to save the result?"); if (text != null) { //保存预制体 //GameObject gameObject = (GameObject)Instantiate(scenesdf.gameObject); //DestroyImmediate(gameObject.GetComponent<SceneSDF>()); //AssetDatabase.Refresh(); //Mesh sharedMesh = scenesdf.GetComponent<MeshFilter>().sharedMesh; //if (!EditorUtility.IsPersistent(sharedMesh)) //{ // if (sharedMesh.name == "") // { // sharedMesh.name = "Result"; // } // AssetDatabase.CreateAsset(sharedMesh, text.Replace(".prefab", "_Mesh.asset")); //} //PrefabUtility.SaveAsPrefabAsset(gameObject, text); //AssetDatabase.Refresh(); //DestroyImmediate(gameObject); //保存网格.obj GameObject gameObject = (GameObject)Instantiate(scenesdf.gameObject); ExportMesh.ExportMeshToObj(gameObject, text); } } if (GUI.changed) { EditorUtility.SetDirty(target); } }
public override void OnInspectorGUI() { SceneSDFArea scenesdfArea = target as SceneSDFArea; GUILayout.Space(8.0f); scenesdfArea.name = EditorGUILayout.TextField("Name", scenesdfArea.name); GUILayout.Space(8.0f); bool executeflag = EditorGUILayout.Toggle("Execute in Editor", scenesdfArea.isEditor, new GUILayoutOption[0]); if (executeflag != scenesdfArea.isEditor) { scenesdfArea.isEditor = executeflag; scenesdfArea.living = false; scenesdfArea.StopAllCoroutines(); } //scenesdfArea.Operations = EditorGUILayout.PropertyField(serializedObject.FindProperty("Operations"),new GUIContent("Operations"),true); var Operations = scenesdfArea.Operations; int count = Mathf.Max(0, EditorGUILayout.IntField("size", Operations.Count)); while (count < Operations.Count) { Operations.RemoveAt(Operations.Count - 1); } while (count > Operations.Count) { Operations.Add(null); } for (int i = 0; i < Operations.Count; i++) { Operations[i] = (MeshFilter)EditorGUILayout.ObjectField(Operations[i], typeof(MeshFilter)); } GUILayout.Space(8.0f); scenesdfArea.McShader = (ComputeShader)EditorGUILayout.ObjectField("McShader", scenesdfArea.McShader, typeof(ComputeShader), true); scenesdfArea.SdfShader = (ComputeShader)EditorGUILayout.ObjectField("SdfShader", scenesdfArea.SdfShader, typeof(ComputeShader), true); GUILayout.Space(8.0f); if (GUILayout.Button("Update Mesh")) { scenesdfArea.ExecuteOnClick(); } if (GUILayout.Button("Save Mesh", new GUILayoutOption[0]))//Save Prefab { //string text = EditorUtility.SaveFilePanelInProject("Save Result", scenesdf.gameObject.name, "prefab", "Please select where do you want to save the result?"); string text = EditorUtility.SaveFilePanelInProject("Save Result", scenesdfArea.gameObject.name, "obj", "Please select where do you want to save the result?"); if (text != null) { //±£´æÍø¸ñ.obj GameObject gameObject = (GameObject)Instantiate(scenesdfArea.gameObject); ExportMesh.ExportMeshToObj(gameObject, text); } } if (GUI.changed) { EditorUtility.SetDirty(target); } }