コード例 #1
0
    public override void OnInspectorGUI()
    {
        road = target as RoadSegment;
        if (GUILayout.Button("Generate mesh"))
        {
            Undo.RecordObject(road, "Generated mesh");
            road.GenerateMeshAndInit();
            EditorUtility.SetDirty(road);
        }
        if (GUILayout.Button("Add submesh") || road.currentlyExpanded)
        {
            road.currentlyExpanded = true;

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Mesh crossection desired: ");
            road.newShape = EditorGUILayout.ObjectField(road.newShape, typeof(MeshCrossection), false) as MeshCrossection;
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Material: ");
            road.newMaterial = EditorGUILayout.ObjectField(road.newMaterial, typeof(Material), false) as Material;
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            if (road.newShape == null)
            {
                EditorGUILayout.HelpBox("Still needs mesh shape.", MessageType.Warning);
            }
            else if (road.newMaterial == null)
            {
                EditorGUILayout.HelpBox("Still needs material.", MessageType.Warning);
            }
            else if (GUILayout.Button("Generate") && road.newMaterial != null && road.newShape != null)
            {
                Undo.RecordObject(road, "Added submesh");
                road.CreateNewSubmesh();
                EditorUtility.SetDirty(road);
                road.currentlyExpanded = false;
            }

            if (GUILayout.Button("Cancel"))
            {
                road.newShape          = null;
                road.newMaterial       = null;
                road.currentlyExpanded = false;
            }
            EditorGUILayout.EndHorizontal();
        }
        base.OnInspectorGUI();
    }
 public void SetMesh()
 {
     road.GenerateMeshAndInit();
 }