Last updated on 2024-09-28T11:32:59+08:00
分析
相关细节
自定义网格
基础网格
1 2 3 4 5 6 7 8 9
| public class Grid<T> { public T[,] grids; public Vector3 rotation; public int width; public int height; private Vector3 cellSize; private Vector3 origin; }
|
网格物件
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class GridObject { public int x, y; private Grid<GridObject> grid; public PlaceableObject PlaceableObject; public bool CanBuild; public GridObject(Grid<GridObject> grid, int x, int y) { this.grid = grid; this.x = x; this.y = y; } }
|
可放置物件
1 2 3 4 5 6 7 8
| public class PlaceableObject { public int depth; public Vector2Int offset; public Transform placedObjectTransform; public List<Vector2Int> GridPositions; private List<Grid<GridObject>> grids; }
|
遮挡和排序
- 深度值越大的(即被放置到其他物件之上),越靠前
- 网格索引 (x, 0, z) 越小排序越靠前
- 地面的可以遮挡墙面的
工具
- 定义可编辑场景,导入相关资源
- 编辑模式
- 编辑物件的 Placeable 部分
- 编辑物件的 Grid 部分
- 删除区域
- 响应利用射线检测鼠标位置,在不同编辑模式下,将屏幕坐标转成世界坐标,再转换到网格坐标
- 存储编辑结果
- 利用
ScriptableObject
、Json
、二进制等存储方式进行保存
- 加载
DIY 摆放
https://silhouettesforyou.github.io/2024/05/31/ee6e87e384c9/