Script
canh chỉnh sprite nền vừa khít màn hình
·
Mặc dù từ bản Unity 5.0 trở đi, chúng ta đã có UI hỗ trợ việc căn chỉnh hình ảnh, button, text phù hợp với mọi kích cỡ màn hình, tuy nhiên có trường hợp như bạn có
1 sprite nền (background) và muốn nó vừa khít với tất cả tỉ lệ màn hình (4:3,
16:9, …), lúc này bạn cần viết một script nhỏ để làm việc này.
Để demo, bạn tạo 1
scene, thêm vào 1 sprite là tấm hình background
lúc này bạn chưa cần
quan tâm tới vị trí hay kích thước tấm hình
Sau đó bạn viết
script như sau (tôi có comment đầy đủ chi tiết từng câu lệnh):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using UnityEngine;
using System.Collections;
//phải using UnityEditor để có thể dùng
TextureImporter
using UnityEditor;
public
class resizeSpriteFullScreen
: MonoBehaviour
{
//tham
chiếu tới camera
public
Camera cam;
//
Use this for initialization
void
Start ()
{
//lấy
component Sprite Renderer
SpriteRenderer
sr = GetComponent<SpriteRenderer>();
//lấy
hình cần đặt fullscreen
TextureImporter
ti =
AssetImporter.GetAtPath("Assets/image1.png")
as TextureImporter;
//lấy
giá trị Pixels To Units của tấm hình sprite đó
float
PixelsToUnits
= ti.spritePixelsToUnits;
//Khai
báo vector3 mới
Vector3
sc =
new Vector3(1f,
1f,
1f);
//tính
toán chiều cao và chiều rộng của sprite cho khít với màn hình
sc.y
= cam.orthographicSize*2f*PixelsToUnits/sr.sprite.rect.height;
sc.x
= (cam.orthographicSize*(float)Screen.width/(float)Screen.height)*2f*PixelsToUnits/sr.sprite.rect.width;
//gán
giá trị tính được vào local Scale của sprite
transform.localScale
= sc;
//cho
sprite vào vị trí chính giữa màn hình
transform.position = cam.transform.position;
}
}
|
Bạn đưa script đó bỏ vào
object background và kéo object Main camera vào biến tương ứng trong script
Bạn nhớ để
ý scale lúc này là 1:1:1
Bây giờ
bạn Play game, sẽ thấy ngay kết quả, sprite đã vừa khít màn hình, cho dù bạn
thay đổi màn hình tỉ lệ hay kích thước nào chăng nữa. Ở những bài viết sau mình sẽ nói chi tiết hơn Sprite Renderer để các bạn hiểu rõ và có thể tự mình tìm ra cách scale Sprite theo tỉ lệ màn hình phù hợp nhất.
Like, share nếu bạn thấy bài viết của mình có ích! :)
No comments:
Post a Comment