protected override void CustomOnGUI() { _mat = EditorUIHelper.ObjectField <Material>(_mat, "替换材质球"); _addMat = EditorUIHelper.ObjectField <Material>(_addMat, "替换材质球"); _lod = EditorUIHelper.IntSlider("LOD", _lod, 0, 5); _splitCount = EditorUIHelper.IntSlider("分割块数,4^n", _splitCount, 0, 5); _indexFormat = EditorUIHelper.EnumPopup <IndexFormat>(_indexFormat); EditorUIHelper.Space(); EditorUIHelper.LabelField("使用 UInt16,1025的高度图设置,得分割3次才能满足顶点数限制"); EditorUIHelper.Space(); EditorUIHelper.Button("ExportSplatmaps", ExportSplatmaps); EditorUIHelper.Space(); EditorUIHelper.Button("Terrain2Mesh", ConvertTerrain2Mesh); EditorUIHelper.Space(); EditorUIHelper.Button("SaveMeshes", SaveMeshes); }
protected override void CustomOnGUI() { _maxHits = EditorUIHelper.IntSlider("射线最多碰撞次数(检测叠层的时候才需要)", _maxHits, MinHitNums, MaxHitNums); _checkLayerMask = EditorUIHelper.LayerMask(_checkLayerMask, "检测层(涉及层)"); _generateLayerMask = EditorUIHelper.LayerMask(_generateLayerMask, "生成层(某些层的内外围)"); EditorUIHelper.Space(); _calculateType = EditorUIHelper.EnumPopup <SceneInfoCalculation.CalculateType>(_calculateType, "筛选条件(如内外围)"); _minRange = EditorUIHelper.IntSlider("边界最近距离(-1代表全部)", _minRange, MinRange, MaxRange); _maxRange = EditorUIHelper.IntSlider("影响最远距离(-1代表全部)", _maxRange, MinRange, MaxRange); EditorUIHelper.Space(); EditorUIHelper.Button("刷新", Refresh); EditorUIHelper.Space(); EditorUIHelper.ObjectField <Texture>(_previewTexture, "预览"); EditorUIHelper.Space(); _noise = EditorUIHelper.Vector4Field("noise偏移及缩放", _noise); _noiseThreshold = EditorUIHelper.Slider("noise阈值", _noiseThreshold, 0, 1); EditorUIHelper.Button("叠加噪声图", CompositionNoise); EditorUIHelper.Space(); EditorUIHelper.ObjectField <Texture>(_finalTexture, "叠加噪声图之后"); EditorUIHelper.Space(); _parent = EditorUIHelper.ObjectField <Transform>(_parent, "父节点", true); _clearParent = EditorUIHelper.Toggle("清理父节点", _clearParent); _space = EditorUIHelper.IntSlider("间隔(密度)", _space, MinSpace, MaxSpace); EditorUIHelper.Space(); EditorUIHelper.BeginScrollView(_scenePrefabScrollPos); var deletePrefabIndex = -1; for (int i = 0; i < _scenePrefabs.Count; i++) { var scenePrefab = _scenePrefabs[i]; EditorUIHelper.BeginHorizontal(); scenePrefab.Prefab = EditorUIHelper.ObjectField <GameObject>(scenePrefab.Prefab); scenePrefab.Weight = EditorUIHelper.IntSlider("权重", scenePrefab.Weight, MinWeight, MaxWeight); var i1 = i; EditorUIHelper.Button("删除", () => { deletePrefabIndex = i1; }); EditorUIHelper.EndHorizontal(); EditorUIHelper.BeginHorizontal(); scenePrefab.MinScale = EditorUIHelper.Slider("缩放随机最小值", scenePrefab.MinScale, MinScale, MaxScale); scenePrefab.MaxScale = EditorUIHelper.Slider("缩放随机最大值", scenePrefab.MaxScale, MinScale, MaxScale); EditorUIHelper.EndHorizontal(); EditorUIHelper.Space(); } if (deletePrefabIndex >= 0) { _scenePrefabs.RemoveAt(deletePrefabIndex); } EditorUIHelper.Button("添加", () => _scenePrefabs.Add(new ScenePrefab())); EditorUIHelper.EndScrollView(); EditorUIHelper.Space(); EditorUIHelper.Button("生成", Generate); }
public override void OnInspectorGUI() { if (_grid.HexMat == null) { LoadMaterial(); } _grid.HexMat = EditorUIHelper.ObjectField <Material>(_grid.HexMat, "材质球"); _grid.Data = EditorUIHelper.ObjectField <HexGridData>(_grid.Data, "数据"); var gridData = _grid.Data; if (gridData == null) { EditorUIHelper.Space(); EditorUIHelper.Button("创建数据", CreateHexGridData); } else { gridData.width = EditorUIHelper.Slider("宽度", gridData.width, 0, 1000); gridData.height = EditorUIHelper.Slider("高度", gridData.height, 0, 1000); gridData.size = EditorUIHelper.Slider("六边形边长", gridData.size, 0, 10); EditorUIHelper.Button("更新HexGrid", UpdateHexGrid); _grid.BorderColor = EditorUIHelper.ColorField(_grid.BorderColor, "边界颜色"); EditorUIHelper.PropertyField(serializedObject, "Renderer", "网格颜色"); _grid.ShowScope = EditorUIHelper.Toggle("显示边界", _grid.ShowScope); _grid.ShowGrid = EditorUIHelper.Toggle("显示网格", _grid.ShowGrid); } EditorUIHelper.Space(); _grid.BrushData = EditorUIHelper.ObjectField <BrushData>(_grid.BrushData, "笔刷"); var brushData = _grid.BrushData; if (brushData == null) { EditorUIHelper.Space(); EditorUIHelper.Button("创建笔刷", CreateBrushData); } else { EditorUIHelper.Button("编辑笔刷", () => BrushDataEditorWindow.Open(brushData)); EditorUIHelper.Space(); _brushType = EditorUIHelper.EnumPopup <BrushData.BrushType>(_brushType, "笔刷类型"); if (_brushType != BrushData.BrushType.None) { if (brushData.pathBrushes.Count > 0) { _curBrush = EditorUIHelper.Popup("刷路", _curBrush, brushData.pathBrushes.Select(brush => brush.name).ToArray()); } _brushFeature.brushOptionType = EditorUIHelper.EnumPopup <BrushFeature.BrushOptionType>(_brushFeature.brushOptionType); _brushFeature.brushRange = EditorUIHelper.IntSlider("笔刷大小", _brushFeature.brushRange, 0, 10); } } if (EditorUIHelper.Changed) { serializedObject.ApplyModifiedProperties(); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); if (gridData != null) { EditorUtility.SetDirty(gridData); } } }