Unity DOTS 一文开启ECS大门
Unity DOTS 一文開啟ECS大門
- 前言
- 環境
- 過程
- 新建URP項目
- 導入Entity等插件包
- 開啟Entity Debugger窗口
- 編寫第一個Entity腳本
- 為Entity添加Component
- 創建一個System
- 參考
前言
Unity DOTS 已經迎來1.0版本更新,但是目前開發DOTS還得用Entity 0.51.1版本比較合適,資料相對較多,Bug相對較少。下文就從最基本的開始,創建一個Entity+Component+System。
環境
| Unity | 2021.3.8f1 |
| Visual Studio | 2019 |
| URP | 12.1.7 |
| Entity | 0.51.1-preview.21 |
| Rendering.Hybrid | 0.51.1-preview.21 |
| physics | 0.51.1-preview.21 |
過程
新建URP項目
導入Entity等插件包
項目創建完成后,在任務管理器中打開工程目錄,找到Packages文件夾
打開文件夾,找到manifest.json文件
打開并添加
保存后回到Unity,打開PackageManager
點擊Advanced Project Settings
更改
Enable Pre-release Packages
Show Despendencies
兩項的設置
關閉設置
升級包
這兩個同樣升級一下
確保三個包都升級完畢,關閉PackageManager窗口
開啟Entity Debugger窗口
開啟Entity Debugger窗口便于查看
編寫第一個Entity腳本
創建腳本Spawer并掛載
在腳本中編寫以下代碼
保存并回到Unity,點擊運行
可以在Debugger窗口中看到我們剛創建的Entity
其中
Entity 0 為 PhysicsSystem
WorldTime 為 游戲時間
GameObject Scene 為 游戲場景
為Entity添加Component
創建腳本LevelComponent并添加以下代碼
Tip:不需要拖拽到場景物體上
修改Spawer腳本
using System.Collections; using System.Collections.Generic; using UnityEngine; using Unity.Entities; using Unity.Transforms; using Unity.Rendering; using Unity.Mathematics;public class Spawer : MonoBehaviour {void Start(){MakeEntities();}private void MakeEntities(){//拿到默認世界中的實體管理器EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;//創建一個原型 用來給實體分配數據EntityArchetype archetype = entityManager.CreateArchetype(//移動typeof(Translation),//旋轉typeof(Rotation),//關卡組件typeof(LevelComponent));//根據原型創建一個實體Entity myEntity = entityManager.CreateEntity(archetype);} }運行場景
可以看到我們創建的Entity已經掛載了LevelComponent
創建一個System
創建一個System來控制LevelComponent中的值
創建LevelSystem腳本,并添加以下內容
保存并運行場景
可以看到Level的值在不斷變化
至此Entity Component System系統全部正常運行。
參考
https://docs.unity3d.com/Packages/com.unity.entities@0.51/manual/index.html
https://docs.unity3d.com/Packages/com.unity.rendering.hybrid@0.51/manual/requirements-and-compatibility.html
總結
以上是生活随笔為你收集整理的Unity DOTS 一文开启ECS大门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java后台程序员转android 之《
- 下一篇: 蓝桥杯 基础练习VIP FJ的字符串 j