njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
Prefab

Mẫu để tạo entity, tìm theo tên, spawn làm con của entity khác. Tiếp...

Classes

struct  njin::prefab_desc
 Mô tả một prefab, dùng với prefab_register(). Tiếp...

Typedefs

using njin::prefab_fnc = void (*)(context &ctx, entt::entity entity)
 Hàm dựng một prefab: gắn component vào entity vừa tạo.

Các hàm

prefab_handle njin::prefab_register (context &ctx, const prefab_desc &desc)
 Đăng ký một prefab.
prefab_handle njin::prefab_find (const context &ctx, const char *name)
 Tìm prefab theo tên.
entt::entity njin::prefab_spawn (context &ctx, prefab_handle prefab, const transform &at={})
 Tạo một entity từ prefab, đặt tại at.
entt::entity njin::prefab_spawn (context &ctx, const char *name, const transform &at={})
 Như prefab_spawn(), tìm prefab theo tên.
entt::entity njin::prefab_spawn_child (context &ctx, prefab_handle prefab, entt::entity parent, const transform &local={})
 Tạo một entity từ prefab và gắn nó làm con của parent.

Mô tả chi tiết

Mẫu để tạo entity, tìm theo tên, spawn làm con của entity khác.

Thông tin về Typedef

◆ prefab_fnc

using njin::prefab_fnc = void (*)(context &ctx, entt::entity entity)

Hàm dựng một prefab: gắn component vào entity vừa tạo.

Entity đã có sẵn transform (và njin::scene_owned nếu prefab yêu cầu) khi hàm được gọi. Hàm có thể spawn thêm prefab khác và gắn chúng làm con bằng njin::child_of, ví dụ nhân vật kèm vũ khí.

Thông tin về hàm

◆ prefab_register()

prefab_handle njin::prefab_register ( context & ctx,
const prefab_desc & desc )

Đăng ký một prefab.

Nếu tên đã có thì trả về prefab cũ và bỏ qua desc.

Các tham số
ctxContext của engine.
descMô tả prefab.
Giá trị trả về
Handle của prefab, hoặc handle id 0 nếu thiếu tên hoặc hàm dựng.

◆ prefab_find()

prefab_handle njin::prefab_find ( const context & ctx,
const char * name )

Tìm prefab theo tên.

Các tham số
ctxContext của engine.
nameTên prefab.
Giá trị trả về
Handle của prefab, hoặc handle id 0 nếu không có.

◆ prefab_spawn() [1/2]

entt::entity njin::prefab_spawn ( context & ctx,
prefab_handle prefab,
const transform & at = {} )

Tạo một entity từ prefab, đặt tại at.

Thứ tự: tạo entity, gắn transform at, gắn njin::scene_owned (nếu prefab_desc::scene_owned và đang có scene), rồi gọi hàm dựng. Sửa gì thêm thì sửa trên entity trả về.

const entt::entity e = njin::prefab_spawn(ctx, g.coin, {.pos = {120, 80}});
world(ctx).get<coin>(e).value = 5;
entt::registry & world(context &ctx)
Trả về registry của EnTT chứa mọi entity và component của game.
entt::entity prefab_spawn(context &ctx, prefab_handle prefab, const transform &at={})
Tạo một entity từ prefab, đặt tại at.
Các tham số
ctxContext của engine.
prefabPrefab cần tạo.
atTransform ban đầu.
Giá trị trả về
Entity vừa tạo, hoặc entt::null nếu handle không hợp lệ.

◆ prefab_spawn() [2/2]

entt::entity njin::prefab_spawn ( context & ctx,
const char * name,
const transform & at = {} )

Như prefab_spawn(), tìm prefab theo tên.

Các tham số
ctxContext của engine.
nameTên prefab.
atTransform ban đầu.
Giá trị trả về
Entity vừa tạo, hoặc entt::null nếu không có prefab tên đó.

◆ prefab_spawn_child()

entt::entity njin::prefab_spawn_child ( context & ctx,
prefab_handle prefab,
entt::entity parent,
const transform & local = {} )

Tạo một entity từ prefab và gắn nó làm con của parent.

local là vị trí so với cha (xem njin::child_of). Transform của entity được tính ngay, nên đúng vị trí từ frame đầu tiên.

Các tham số
ctxContext của engine.
prefabPrefab cần tạo.
parentEntity cha. Phải có transform.
localTransform so với cha.
Giá trị trả về
Entity vừa tạo, hoặc entt::null nếu handle không hợp lệ.