Thanh máu (HP) trong game này được bo tròn ở góc như hình dưới đây, cái này thì người dùng có khi ít để ý, nhưng mà tôi thấy ngứa mắt ấy. Bình thường khi bình máu còn nhiều sẽ không lộ, nhưng nếu chỉ còn tầm 1-2% HP, thì cái sprite nó bị co về rất ngu học như hình bên phải, lòi ra ngoài cái background.

Cái này do thằng component Sprite Renderer xử lý chán. Dù để Draw Mode kiểu nào cũng bị như vậy: Simple/Sliced/Tiled, và cũng đã set cái texture theo dạng 9-patch.

Game thì đẹp rồi, mà bị cái này cũng cú, thế là chữa cháy bằng cách nhét cái component Sprite Mask vào cái ảnh background (thằng cha), rồi trong thằng con thì vào component Sprite Renderer -> Mask Interaction chọn Visible Inside Mask, và kết quả:

Tránh vỏ dưa thì gặp vỏ dừa, cách giải quyết trên lại làm lòi ra một cái bug cùi bắp của unity.

Cái Scroll View của Unity Canvas nó lại dùng chung cách xử lý Mask của Sprite Renderer nên nó nhận cả phần thanh máu là Mask. Vì vậy khi 2 phần này đè lên nhau sẽ bị lỗi như hình trên.

Các xử lý đơn giản là vào object Viewport của Scroll View thay thế component Mask bằng component Rect Mask 2D. Component Rect Mask 2D chỉ làm việc trên không gian 2D, lại còn chạy nhẹ nhàng hơn component Mask, éo hiểu sao Unity lại dùng Mask làm mặc định (WTF).

Mọe thằng Unity ngáo đá, đáng nhẽ phần Canvas là 2D thì phải dùng component Rect Mask 2D từ đầu, lại đi dùng component Mask hoạt động cùng tần số Sprite Mask.

Sprite Mask: Gắn trên Sprite Renderer, làm việc trong không gian 3D
Rect Mask 2D: Gắn trên Canvas Viewport, làm việc trong không gian 2D
Mask: Gắn trên Canvas Viewport, làm việc trong không gian 3D – WTF unity????