相关资源
在本科毕设的时候使用到的一个 Unity 的网格系统, 但是那时候没有做笔记有点忘了 orz, 现在为了做算法大作业再拿出来用用…只看了前三节的部分实现 A*算法就行.
这个 CodeMonkey 的代码能力还是很牛逼的, 我不介意重学一遍
-
YouTube 视频: [Grid System in Unity (How to make it and where to use it) - YouTube](https://www.youtube.com/playlist?list=PLHae9ggVvqPgyRQQOtENr6hK0m1UquGaG)
-
Get the Project files and Utilities at https://unitycodemonkey.com/video.php…
Let’s add C# Generics to our Grid System.
This allows us to use the Grid with any object type we can think of to solve whatever problem we have. Grid System in Unity (Heatmap, Pathfinding, Building Area) https://www.youtube.com/watch?v=waEsG…
Make Awesome Effects with Meshes in Unity | How to make a Mesh https://www.youtube.com/watch?v=11c9r…
Quadrant System in Unity ECS (Find Target/Obstacle Avoidance/Boids) https://www.youtube.com/watch?v=hP4Vu…
Battle Royale Tycoon on Steam https://store.steampowered.com/app/85…
If you have any questions post them in the comments and I’ll do my best to answer them.
-
Bilibili 搬运: Unity 中的网格系统 Grid System in Unity (How to make it and where to use it)_哔哩哔哩_bilibili
正文
网格系统
Grid System in Unity (Heatmap, Pathfinding, Building Area)
设计 Grid 类
建立了一个 Grid 类, 包含如下元素:
- 宽 width
- 高 height
- 网格大小 cellSize
- 起始位置 originPosition
- 网格数组 gridArray
- debug 用数组 debugTextArray
1 |
|
设计构造函数
设计构造函数 public Grid(int width, int height, float cellSize, Vector3 originPosition)
1 |
|
坐标转换
此时有两种坐标:
- 网格坐标 XY (数组的下标)
- 游戏中的世界坐标 WorldPosition
设计两个函数用于两种坐标之间的转换:
1 |
|
设置网格系统中的值
根据坐标设置网格系统中的值:
1 |
|
获取网格系统中的值
根据坐标获取网格系统中的值:
1 |
|
鼠标交互
在 Testing.cs
中使用 Grid 类, 使用鼠标可以修改/获取网格系统中的值. 下面是 Testing.cs
的完整代码:
1 |
|
Grid.cs 完整代码
附 Grid.cs
的完整代码:
1 |
|
Powerful Generics Added! Grid System in Unity (Terraria, Minesweeper, Tilemap)
使用泛型
大概意思就是修改上一章的Grid.cs
, 添加泛型, 增加代码的重用性
将类名修改为:
1 |
|
网格数组 gridArray
中的类型不再使用 int
, 而是使用<TGridObject>
:
1 |
|
构造函数使用了委托Func<Grid<TGridObject>, int, int, TGridObject> createGridObject
:
1 |
|
使用了事件 event, 但是我没学过 orz 就照抄了…
1 |
|
Grid.cs 完整代码
一些函数的名称也因语义做相关改变, 附Grid.cs
的完整代码:
1 |
|
设计并使用 HeatMapGridObject 类
此时就可以在 Testing.cs
中自行设计类, 在网格系统中存储自己想要存储的数据:
(因为我不需要使用热图, 所以没有按照视频搬运热图相关的代码)
设计并使用 HeatMapGridObject
类的完整 Testing.cs
代码:
1 |
|
运行效果:
设计并使用 StringGridObject 类
设计并使用 StringGridObject
类的完整 Testing.cs
代码:
1 |
|
运行效果:
AStar 算法
A* Pathfinding in Unity
这篇的代码量还真是大…直接抄吧
场景对象布局
CharacterPathfindingMovementHandler 控制人物行走
1 |
|
PathfindingDebugStepVisual 界面可视化
1 |
|
PathfindingDebugStepVisual 算法步骤可视化
1 |
|
Testing.cs
Testing.cs
源代码:
1 |
|