Tạo Dino đầu tiên với ECS
DinoTag.cs
Tạo một struct trống kế thừa IComponentData. Struct này chỉ có tác dụng đánh dấu entity là Dino nên không cần data.
using Unity.Entities;
public struct DinoTag : IComponentData { }MovementData.cs
Tạo một IComponentData chứa dữ liệu cần thiết cho việc di chuyển.
using Unity.Entities;
using Unity.Mathematics;
public struct MovementData : IComponentData
{
public float Speed;
public float3 Direction;
}DinoAuthoring.cs
using Unity.Entities;
using UnityEngine;
public class DinoAuthoring : MonoBehaviour
{
[SerializeField] private float speed; public float Speed => speed;
}
class DinoAuthoringBaker : Baker<DinoAuthoring>
{
public override void Bake(DinoAuthoring authoring)
{
Entity entity = GetEntity(TransformUsageFlags.Dynamic);
MovementData movementData = new()
{
Speed = authoring.Speed,
Direction = new Unity.Mathematics.float3(0, 0, 1)
};
AddComponent<DinoTag>(entity);
AddComponent(entity, movementData);
}
}Trong Editor:
- Tạo một Sub Scene bằng cách chuột phải trong của số
Hierarchychuột phải chọnNew Sub Scene > Empty Scene - Tạo một GameObject
_DinoArchetypethêm component DinoAuthoring và thiết lập thông số. - Kéo
_DinoArchetypevào sub scene vừa tạo bên trên.
Tạo sub scene
Cũng có thể tạo sub scene bằng cách chọn các gameObject cần đưa vào sub scene sau đó chuột phải chọn New Sub Scene > From Selection
Như thế các gameObject được chọn sẽ tự động được thêm vào sub scene vừa tạo.
Kiểm tra Entity vừa tạo
- Nếu tạo đúng thì trong của sổ Inspector phía dưới cùng sẽ có Entity Baking Preview như thế này
- Hoặc cũng có thể mở cửa số Entity Hierarchy bằng cách Window > Entities > Hierarchy. Khi chạy game bạn có thể dùng Filter để tìm các Entity có DinoTag hoặc MovementData. Nếu tìm thấy tức là entity đã được tạo thành công.