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
Hot reload

Nạp lại texture và shader khi file đổi, lúc game đang chạy. Tiếp...

Classes

struct  njin::asset_reloaded
 Một tài nguyên vừa được nạp lại, gửi qua events() sau lần nạp lại. Tiếp...

Các hàm

void njin::hot_reload_enable (context &ctx, bool on, f32 interval=0.25f)
 Bật hoặc tắt hot reload: sửa file ảnh, shader hoặc script Lua khi game đang chạy, lưu lại, và game dùng ngay bản mới, không cần khởi động lại.
bool njin::hot_reload_enabled (const context &ctx)
 Hot reload có đang bật không.
i32 njin::hot_reload_now (context &ctx)
 Kiểm tra ngay mọi file và nạp lại những file đã đổi, không đợi.

Mô tả chi tiết

Nạp lại texture và shader khi file đổi, lúc game đang chạy.

Thông tin về hàm

◆ hot_reload_enable()

void njin::hot_reload_enable ( context & ctx,
bool on,
f32 interval = 0.25f )

Bật hoặc tắt hot reload: sửa file ảnh, shader hoặc script Lua khi game đang chạy, lưu lại, và game dùng ngay bản mới, không cần khởi động lại.

Khi bật, engine kiểm tra thời gian sửa của mọi file texture, shader và script đã nạp, vài lần mỗi giây. File đổi được nạp lại vào đúng handle cũ, nên sprite, tilemap, shader post đang dùng nó đổi theo ngay. Script gắn trên entity thì được thay hàm mà giữ nguyên dữ liệu của self (xem script_attach()). File vừa đổi được nạp lại ở lần kiểm tra sau, khi nó đã thôi đổi, để không đọc nhầm một file editor đang ghi dở.

Shader lỗi biên dịch thì giữ bản cũ và ghi lỗi của trình biên dịch vào log, nên sửa shader sai không làm game hỏng; sửa đúng thì bản mới vào ngay.

Mặc định tắt: kiểm tra file tốn một chút thời gian mỗi lần, và game đã phát hành không cần. Thường bật trong bản debug:

#ifndef NDEBUG
#endif
void hot_reload_enable(context &ctx, bool on, f32 interval=0.25f)
Bật hoặc tắt hot reload: sửa file ảnh, shader hoặc script Lua khi game đang chạy, lưu lại,...
Các tham số
ctxContext của engine.
onBật hay tắt.
intervalKhoảng giữa hai lần kiểm tra, giây thật.

◆ hot_reload_enabled()

bool njin::hot_reload_enabled ( const context & ctx)

Hot reload có đang bật không.

Các tham số
ctxContext của engine.
Giá trị trả về
true nếu bật.

◆ hot_reload_now()

i32 njin::hot_reload_now ( context & ctx)

Kiểm tra ngay mọi file và nạp lại những file đã đổi, không đợi.

Chạy được cả khi hot reload đang tắt, ví dụ gắn vào phím F5.

Các tham số
ctxContext của engine.
Giá trị trả về
Số tài nguyên đã nạp lại thành công.