Cách nhập bảng sprite vào Unity
Thả PNG vào dự án Unity mất một giây. Làm nó hiển thị thành sprite sắc, đúng tỷ lệ và cắt đúng cần khoảng sáu cài đặt, phần lớn mặc định sai cho 2D. Sau đây là chức năng từng cài đặt, cách cắt trong Sprite Editor và khi nào cắt trước khi đưa Unity nhanh hơn.
Bắt đầu với Texture Type
Chọn PNG đã nhập trong Project và xem Inspector. Danh sách thả xuống đầu tiên là Texture Type, và mặc định là Default — là cách xử lý texture 3D. Đổi thành Sprite (2D and UI).
Không chỉ thẩm mỹ. Đổi pipeline nhập, lộ tùy chọn sprite dưới, bảo Unity tạo Sprite asset thay vì một Texture2D. Nếu thiếu nó, SpriteRenderer không có gì để nhận và nút Sprite Editor vẫn bị vô hiệu hóa. Nếu dự án được tạo từ mẫu 2D, texture mới đã mặc định là Sprite, nên kiểm tra trước khi đi tìm thiết lập.
Nhớ nhấn Áp dụng ở dưới cùng Inspector. Unity chưa lưu thiết lập nhập texture cho đến khi bạn làm vậy, và các thay đổi sẽ âm thầm hoàn tác nếu bạn chọn asset khác trước. Gần như ai cũng mắc điều này ít nhất một lần.
Sprite Mode: Single hoặc Multiple
Sprite Mode quyết định tệp là một sprite hay nhiều sprite.
- Đơn — toàn ảnh là một sprite. Dùng cho khung riêng đã cắt thành tệp, cho nền và ảnh UI.
- Multiple — ảnh chứa nhiều sprite và bạn sẽ xác định hình chữ nhật của chúng trong Sprite Editor. Dùng cho sheet thực sự muốn giữ thành một tệp.
- Đa giác — tạo mesh tùy chỉnh thay vì quad. Hiếm khi là điều bạn muốn cho sprite sheet; chủ yếu để giảm vẽ chồng ở sprite lớn, phần lớn trong suốt.
Multiple là chế độ thường chọn theo phản xạ nhưng nên cân nhắc. Giữ một bảng là một texture, một nhóm lệnh vẽ, một tài nguyên quản lý. Tách PNG đơn giản thiết lập hoạt ảnh, dễ sửa khung, không cần Unity đoán ranh giới. Cả hai hợp lệ; quyết định thường theo lưới đáng tin không.
Cắt trong Sprite Editor
Khi Sprite Mode đặt thành Multiple, nhấn Sprite Editor. Nếu hoàn toàn không có nút, gói 2D Sprite chưa được cài đặt: thêm từ Window → Package Manager. Trong trình chỉnh sửa, Cắt danh sách thả xuống ở góc trên trái cung cấp ba loại.
Tự động
Unity tìm đảo pixel không trong suốt, vẽ hộp mỗi đảo. Sheet sạch có khe và sprite tách tốt thì một nhấp. Ba lỗi dự đoán: chạm/chồng ghép một hộp; nhân vật có phần rời như vũ khí/bóng tách nhiều; nền đục tạo một hộp toàn vì ảnh toàn đục.
Phần Method danh sách thả xuống bên cạnh quan trọng khi cắt lại. Delete Existing xóa các sửa thủ công của bạn; Smart cố giữ các hình chữ nhật bạn đã điều chỉnh; Safe chỉ thêm mục mới. Dùng Smart hoặc Safe sau khi đã sửa thủ công.

Grid By Cell Size
Bạn nhập chiều rộng và chiều cao pixel, rồi Unity đặt lưới lên texture. Đây là lựa chọn đúng khi biết kích thước ô — chẳng hạn sheet 512×512 gồm ô 64×64. Các trường Offset và Padding xử lý sheet có lề quanh mép hoặc khoảng cách giữa ô. Chỉ cần đặt một lần, mọi ô sẽ đúng vị trí, vì sheet do công cụ tạo thực sự là một lưới.
Grid By Cell Count
Cùng ý tưởng nhưng nhập số cột và hàng để Unity chia. Tiện khi biết sheet 4×4 nhưng chưa tính. Chú ý texture không chia hết: 1024 chia 3 là 341.33, làm tròn tạo dải một pixel của sprite bên cạnh dọc một mép mỗi ô.
Pixels Per Unit và ý nghĩa thực tế
Pixels Per Unit (PPU) là tỷ lệ quy đổi giữa pixel của texture và đơn vị thế giới trong Unity. Giá trị mặc định là 100, nghĩa là sprite 100×100 pixel chiếm đúng một hình vuông một đơn vị thế giới ở tỷ lệ 1.
Đơn vị world Unity trừu tượng nhưng physics, camera, tốc độ đều tính theo, nên số đặt quy mô toàn game. Hai quy ước:
- PPU = kích thước ô của sprite. Nếu ô 16×16, đặt PPU 16, một ô bằng một đơn vị thế giới. Tilemap khớp tọa độ nguyên và trọng lực −9,81 có nghĩa gần vật lý.
- PPU = 100 cho mọi thứ. Đơn giản hơn nếu hình độ phân giải cao và không di chuyển theo ô.
Quan trọng là nhất quán. Sprite nhập PPU khác hiện tỷ lệ khác; cách hay dùng là đổi Transform từng vật chỉ che lỗi, làm collider, vật lý và tái dùng prefab khó hiểu. Đặt đúng PPU lúc nhập.
Filter Mode và nén cho pixel art
Hai thiết lập quyết định pixel art hay vệt mờ.
Filter Mode mặc định là Bilinear, nội suy giữa các texel khi sprite được vẽ ở tỷ lệ khác 1:1. Đây là điều bạn muốn với texture ảnh chụp. Với nhân vật 32×32, nó tạo các cạnh mềm và nhòe. Đặt thành Point (no filter) cho pixel art và ranh giới pixel vẫn sắc.
Compression mặc định là Normal Quality, thường là định dạng nén khối trên phần lớn nền tảng. Nén khối hoạt động bằng cách xấp xỉ các nhóm pixel, và với hình phẳng có mép cứng, lỗi rất rõ — viền màu quanh đường nét, nhất là gần vùng trong suốt. Đặt Compression thành None cho sprite pixel art. Đúng là texture dùng nhiều bộ nhớ hơn; một vài sprite sheet nhỏ không nén chỉ chiếm phần không đáng kể trong ngân sách bộ nhớ hiện đại, còn khác biệt hình ảnh thì không hề nhỏ.
Cũng bỏ chọn Generate Mip Maps cho sprite 2D luôn được vẽ gần kích thước gốc. Mipmap dành cho texture được nhìn ở khoảng cách khác nhau trong 3D; trong 2D, chúng chủ yếu tốn bộ nhớ và đôi khi khiến sprite lấy mẫu mức nhòe hơn dự định.
| Thiết lập | Pixel art | Độ phân giải cao / 2D vẽ |
|---|---|---|
| Texture Type | Sprite (2D and UI) | Sprite (2D and UI) |
| Filter Mode | Point (no filter) | Song tuyến tính |
| Nén | Không có | Chất lượng bình thường |
| Generate Mip Maps | Tắt | Tắt cho 2D, bật nếu đổi tỷ lệ nhiều |
| Pixels Per Unit | Cỡ ô (8, 16, 32…) | 100 |
| Max Size | Ít nhất bằng chiều lớn nhất của bảng | Ít nhất bằng chiều lớn nhất của bảng |
Tệp cắt sẵn so với cắt trong Unity
Slicer Unity tốt cho mục đích gốc: sheet công cụ tạo, lưới thật, khe trong suốt. Grid By Cell Size cho Aseprite chính xác tức thì, không lý do làm nơi khác.
Sheet từ mô hình tạo ảnh là vấn đề khác. Yêu cầu “sprite sheet 4×4” cho hình giống lưới chứ không phải lưới: khe lệch vài pixel mỗi ô, cỡ sprite đổi theo tư thế, nội dung lệch tâm. Grid By Cell Size cắt qua đầu. Automatic ghép hai khung chạm nhau và tách khung có khiên rời. Sau đó kéo 16 hình chữ nhật trong Sprite Editor, một cách chậm để mất 20 phút.
Cắt bảng trước khi nhập tránh vấn đề đó. Công cụ Cắt sprite sheet tìm ranh giới sprite từ kênh alpha thay vì tọa độ giả định, cắt từng khung sát nội dung riêng và xuất PNG riêng. Các ảnh đó vào Unity với Sprite Mode Single mà không cần thao tác Sprite Editor nào. Nếu phát hiện tự động không đúng, tab Thủ công & Mẫu cho phép kéo mỗi đường lưới đến khoảng cách đúng — sáu lần kéo cho sheet mười sáu khung, thay vì mười sáu hình chữ nhật.
Đánh đổi thật: tệp rời thêm tài nguyên, không Sprite Atlas thêm draw call. Nếu quan trọng, cắt ngoài lấy khung đúng rồi thêm Sprite Atlas asset (Assets → Create → 2D → Sprite Atlas) rồi thả thư mục vào danh sách Objects for Packing của nó. Bạn có ranh giới đúng và kết xuất theo lô, trong khi Unity thực hiện việc đóng gói mà nó thực sự giỏi.
Từ sprite đến hoạt ảnh
- Chọn khung theo thứ tự trong cửa sổ Project: sprite con dưới sheet đã cắt hoặc PNG riêng.
- Kéo vùng chọn vào Scene hoặc Hierarchy. Unity hỏi nơi lưu và tạo Animation Clip cùng Animator Controller nối với nó.
- Mở cửa sổ Animation để điều chỉnh tần suất lấy mẫu. Mặc định 12 mẫu mỗi giây phù hợp với nhiều chu kỳ đi bộ; 24 mượt hơn; giá trị một chữ số tạo cảm giác retro giật có chủ ý.
- Xác nhận khung đúng thứ tự. Unity sắp theo tên, nên frame_10 nằm giữa frame_1 và frame_2 trừ khi bạn thêm số 0 thành frame_01.
- Với nhiều clip, lặp quy trình và nối chuyển trạng thái trong Animator, hoặc điều khiển khung trực tiếp từ script nếu muốn tránh Animator.
Câu hỏi thường gặp
Vì sao sprite của tôi có một vạch mảnh từ khung bên cạnh dọc một mép?
Đó là hiện tượng màu texture tràn. Hoặc kích thước ô không chia hết texture, hoặc lọc song tuyến tính đang lấy mẫu vượt ranh giới hình chữ nhật. Đặt Filter Mode thành Point, tắt nén và kiểm tra phép tính ô. Thêm một hoặc hai pixel đệm trong suốt giữa các sprite trong sheet nguồn sẽ ngăn hiện tượng này vĩnh viễn.
Nên dùng Sprite Atlas hay một sheet lớn?
Đa số trường hợp dùng Sprite Atlas. Bạn tạo sprite thành tệp riêng, dễ sửa và sắp lại, còn Unity đóng gói vào texture chung khi build để batching. Mega-sheet thủ công cho kết quả lúc chạy tương tự nhưng thao tác kém tiện hơn nhiều mỗi khi đổi khung.
Hoạt ảnh phát nhưng nhân vật rung lên xuống. Vì sao?
Khung cao khác nhau dùng Pivot Center. Đặt Bottom hoặc đệm mọi khung cùng kích thước trước nhập để nội dung ở vị trí nhất quán.
Tôi cần đổi gì cho Universal Render Pipeline không?
Cài đặt nhập giống nhau. Khác là vật liệu: URP 2D dùng Sprite-Lit-Default khi 2D Renderer hoạt động, nên sprite không chiếu sáng có thể đen đến khi có đèn trong cảnh. Đổi vật liệu SpriteRenderer sang Sprite-Unlit-Default hoặc thêm Global Light 2D.
Cắt sheet trước khi Unity đọc
Nếu auto-slice Unity không hợp bảng, cắt trong trình duyệt trước và nhập PNG riêng sạch. Magic Slice tìm ranh giới từ alpha; Thủ công & Có sẵn cho tự kéo đường. Không tải lên, mọi thứ cục bộ.
Mở Cắt bảng sprite