欢迎光临散文网 会员登陆 & 注册

[学习笔记][翻译搬运]Unity Dots ECS 1.0 github 入门教程

2022-10-30 16:36 作者:白白_可乐  | 我要投稿

https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/DOTS_Guide/ecs_tutorial/README.md

上面是1.0版本入门教程的对应链接,原文是英文,我使用 Chrome 浏览器的插件翻译为了中文,因此在接下来的截图画面中将出现中文.

原文使用的 Unity 版本是2022.2.0b8,不过在我下载2022版本的时候已经更新到2022.2.0b10,也是本文使用的 Unity 版本.

本文将主要记录个人在阅读学习该文章时遇到的问题及心得体会.

不是很建议用2022.2.0b10这个版本,我过程中经常卡死.

(还会盗一些教程里面的图哈哈)


在跟随原文创建了一个 3D URP 模板的项目后,开局就弹了一个 URP 材质需要升级的窗口,我们直接升级就是了.

URP版本过低

接下来是安装 DOTS 包,这一步可能会出现网络问题,建议刷新或者切换网络环境.

接下来进入 Edit > Project Settings > Editor 勾选 Enter Play Mode Options


然后创建一系列文件夹:

调整设置:

创建场景

创建子场景,命名为 EntityScene:

太长懒得打字,直接截图了:

移除创建时附带的碰撞体(Collider).

炮塔旋转

接下来在“Scripts/Systems”文件夹中创建一个名为“TurretRotationSystem.cs”的新文件,复制代码:

保存,等待代码编译完成,然后 Run 一下:

原文在此处有个笔记:

简单翻译一下就是说上文代码中的 foreach 会旋转所有带 transform 的东西,我们需要修改代码以确保代码仅影响 Turret 这个物体.

退出播放模式

啊我在这儿直接卡了

强退进程重来,这个故事告诉我们一定要勤按 Ctrl+S

在“Scripts/Components”文件夹中创建一个名为“Turret.cs”的新C#源文件,将以下内容放入其中:


在“Scripts/Authoring”文件夹中创建一个名为“TurretAuthoring.cs”的新C#源文件,将以下内容放入其中:



重建了下Library文件夹,勉强解决了无限Hold on.

我们继续.

将“TurretAuthoring”组件添加到“Turret”游戏对象中,方法是将 TurretAuthoring.cs 文件拖放到 Turret GameObject 上,或者使用游戏对象检查器中的“添加组件”按钮并找到“Turret Authoring”。


修改文件夹“Scripts/Systems”中名为“TurretRotationSystem.cs”的文件内容如下:

再次运行:

退出播放模式

坦克移动

在“Scripts/Components”文件夹中创建一个名为“Tank.cs”的新C#源文件,将以下内容放入其中:

在“Scripts/Authoring”文件夹中创建一个名为“TankAuthoring.cs”的新C#源文件,将以下内容放入其中:

将“TankAuthoring”组件添加到“Tank”游戏对象.

在“Scripts/Systems”文件夹中创建一个名为“TankMovementSystem.cs”的新C#源文件,将以下内容放入其中:


Run!

制作炮弹

在“Scripts/Components”文件夹中创建一个名为“CannonBall.cs”的新C#源文件,将以下内容放入其中:

在“Scripts/Authoring”文件夹中创建一个名为“CannonBallAuthoring.cs”的新C#源文件,将以下内容放入其中:

在 Hierarchy 窗口中右键单击“SampleScene”,选择GameObject > 3D Object > Sphere并将新的 GameObject 命名为“CannonBall”。将其位置设置为 (0,0,0),旋转设置为 (0,0,0),缩放设置为 (0.2,0.2,0.2).

将“CannonBallAuthoring”组件添加到“CannonBall”游戏对象.

从“CannonBall”游戏对象中移除“Sphere Collider”组件.

将“CannonBall”游戏对象拖放到项目窗口中的“Prefabs”文件夹中.

从“SampleScene”中删除“CannonBall”游戏对象(现在是一个预制体实例).


修改文件夹“Scripts/Components”中名为“Turret.cs”的文件内容如下:



修改文件夹“Scripts/Authoring”中名为“TurretAuthoring.cs”的文件内容如下:


选择“Turret”游戏对象,并将“Turret Authoring”组件的新字段“CannonBallPrefab”和“CannonBallSpawn”分别设置到Project文件夹中的“CannonBall”预制件(拖放)和“SpawnPoint”游戏对象(从Hierarchy窗口拖放)


在“Scripts/Aspects”文件夹中创建一个名为“TurretAspect.cs”的新C#源文件,将以下内容放入其中:

在“Scripts/Systems”文件夹中新建一个名为“TurretShootingSystem.cs”的C#源文件,将以下内容放入其中:


Run!

炮弹移动

在“Scripts/Aspects”文件夹中创建一个名为“CannonBallAspect.cs”的新C#源文件,将以下内容放入其中:

进入游戏模式,炮弹现在正在远离坦克并在地面上弹跳:


放置多个坦克

将“坦克”游戏对象从“EntityScene”拖放到项目窗口中的“Assets/Prefabs”文件夹中.

从“EntityScene”中删除“Tank”游戏对象(现在是一个预制体实例).

在“Scripts/Components”文件夹中创建一个名为“Config.cs”的新C#源文件,将以下内容放入其中:


在“Scripts/Authoring”文件夹中创建一个名为“ConfigAuthoring.cs”的新C#源文件,将以下内容放入其中:

在 Hierarchy 窗口中右键单击“EntityScene”,选择Create Empty并将新的 GameObject 命名为“Config”.

将“ConfigAuthoring”组件添加到“Config”游戏对象.

选择“Config”游戏对象,将新字段“TankPrefab”设置为 Project 文件夹中的“Tank”预制件(拖放),将“TankCount”设置为 20,将“SafeZoneRadius”设置为 15.


“SafeZoneRadius”尚未使用,但与后续步骤相关。

在“Scripts/Systems”文件夹中创建一个名为“TankSpawningSystem.cs”的新C#源文件,将以下内容放入其中:

如果您此时进入游戏模式,您可能会惊讶地看到只有一个坦克.实际上有 20 辆坦克,但它们都在相同的位置生成并以完全相同的方式移动.

修改文件夹“Scripts/Systems”中名为“TankMovementSystem.cs”的文件内容如下:

然后就可以Run了:

给坦克和炮弹上色

找到我们的坦克(Tank)预制体,给Tank,Turret以及Cylinder添加 URPMaterialPropertyBaseColor组件,这个时候我们就可以得到全黑的坦克啦.


修改文件夹“Scripts/Systems”中名为“TankSpawningSystem.cs”的文件内容如下:


如果这个时候播放,就可以得到随机颜色的坦克了.

修改文件夹“Scripts/Authoring”中名为“CannonBallAuthoring.cs”的文件内容如下:


修改文件夹“Scripts/Aspects”中名为“TurretAspect.cs”的文件内容如下:


修改文件夹“Scripts/Systems”中名为“TurretShootingSystem.cs”的文件内容如下:


现在再播放,子弹也上色了.

安全区

在“Scripts/Components”文件夹中创建一个名为“Shooting.cs”的新C#源文件,将以下内容放入其中:


修改文件夹“Scripts/Authoring”中名为“TurretAuthoring.cs”的文件内容如下:

在“Scripts/Systems”文件夹中创建一个名为“SafeZoneSystem.cs”的新C#源文件,将以下内容放入其中:

修改文件夹“Scripts/Systems”中名为“TurretShootingSystem.cs”的文件内容如下:

确保在视图选项中启用了 Gizmo,否则您将看不到白色圆圈。

相机跟随

在“Scripts/MonoBehaviours”文件夹中创建一个名为“CameraSingleton.cs”的新C#源文件,将以下内容放入其中:

将“CameraSingleton”MonoBehaviour 添加到“SampleScene”中的“Main Camera”游戏对象.

在“Scripts/Systems”文件夹中创建一个名为“CameraSystem.cs”的新C#源文件,将以下内容放入其中:

进入播放模式,查看 Game 视图(而不是之前的 Scene 视图),并注意相机正在跟随其中一辆坦克。确保 Game 视图具有输入焦点(单击它),然后反复按空格键。相机每次都应该切换到另一个随机坦克。

结束


[学习笔记][翻译搬运]Unity Dots ECS 1.0 github 入门教程的评论 (共 条)

分享到微博请遵守国家法律