Một vấn đề bạn sẽ gặp phải với Android là mọi thiết bị khác nhau đều có kích thước màn hình, độ phân giải và mật độ pixel riêng. Nếu bạn muốn trò chơi của mình trông giống hệt nhau trên tất cả các thiết bị, bạn sẽ làm rất nhiều việc và có lẽ sẽ không bao giờ hài lòng với kết quả này. Trò chơi sẽ xuất hiện trải dài trên màn hình rộng hoặc được nén trên màn hình không rộng. Tôi đề nghị bạn quyết định những gì thực sự quan trọng và để bất cứ điều gì khác trượt một chút.
Không có bất kỳ ảnh chụp màn hình hoặc kiến thức nào về trò chơi của bạn và nó trông như thế nào, chúng ta đều có thể suy đoán các giải pháp nhưng chúng tôi không có hướng cụ thể để cung cấp cho bạn lời khuyên cụ thể.
Trong Unity, bạn có thể truy cập kích thước của màn hình hiện tại bằng lớp Màn hình : Screen.width
và Screen.height
(trong số các thuộc tính khác). Sau đó, bạn có thể thay đổi tỷ lệ khung hình của Máy ảnh để thay đổi những gì hiển thị trên các màn hình có kích thước khác nhau của bạn dựa trên kích thước màn hình và mong muốn cá nhân của bạn về những gì sẽ hiển thị.
Nếu bạn cần đảm bảo mọi màn hình HUD được thu nhỏ đúng cách, bạn có thể làm điều đó bằng cách thay đổi ma trận biến đổi GUI dựa trên kích thước của màn hình trong mọi OnGUI()
chức năng. Tôi đã thực hiện nó trước đây bằng cách tạo tập lệnh đơn giản này và đính kèm nó vào bất cứ thứ gì thể hiện các thành phần GUI mà tôi muốn thu nhỏ:
//GUI values in code are assigned based on an 800x600 screen
private var nativeWidth : float = 800.0f;
private var nativeHeight : float = 600.0f;
private var guiMatrix : Matrix4x4;
function Start ()
{
var scale : Vector3 = Vector3(Screen.width / nativeWidth,
Screen.height / nativeHeight,
1.0f);
guiMatrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, scale);
}
function GetGUIMatrix() : Matrix4x4
{
return guiMatrix;
}
Sau đó, trong OnGUI()
(các) hàm thực tế , tôi đặt ma trận biến đổi ngay lập tức:
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}