ปัญหาที่คุณจะพบกับ Android คืออุปกรณ์ทุกเครื่องมีขนาดหน้าจอความละเอียดและความหนาแน่นของพิกเซลของตัวเอง หากคุณต้องการให้เกมของคุณมีลักษณะเหมือนกันทุกอุปกรณ์คุณจะต้องทำงานหนักและอาจไม่พอใจกับผลลัพธ์ เกมดังกล่าวจะปรากฏบนหน้าจอไวด์สกรีนหรือบีบอัดบนหน้าจอที่ไม่ใช่แบบไวด์สกรีน ฉันขอแนะนำให้คุณตัดสินใจว่าอะไรสำคัญจริง ๆ และปล่อยให้สิ่งอื่นเลื่อนเล็กน้อย
หากไม่มีภาพหน้าจอหรือความรู้เกี่ยวกับเกมของคุณและสิ่งที่ดูเหมือนว่าเราทุกคนสามารถคาดเดาวิธีการแก้ปัญหา แต่เราไม่มีทิศทางที่เฉพาะเจาะจงเพื่อให้คำแนะนำเฉพาะคุณ
ใน Unity คุณสามารถเข้าถึงขนาดของหน้าจอปัจจุบันด้วยคลาสScreen : Screen.width
และScreen.height
(ในบรรดาคุณสมบัติอื่น ๆ ) จากนั้นคุณสามารถเปลี่ยนอัตราส่วนภาพของกล้องเพื่อเปลี่ยนสิ่งที่ปรากฏบนหน้าจอขนาดต่าง ๆ ของคุณตามขนาดหน้าจอและความคาดหวังส่วนบุคคลของคุณเกี่ยวกับสิ่งที่ควรมองเห็น
หากคุณต้องการให้แน่ใจว่าการแสดง HUD ใด ๆ ถูกปรับขนาดอย่างเหมาะสมคุณสามารถทำได้โดยการเปลี่ยนเมทริกซ์การแปลง GUIตามขนาดของหน้าจอในทุกOnGUI()
ฟังก์ชั่น ฉันเคยทำมาก่อนโดยการสร้างสคริปต์ง่าย ๆ นี้แล้วแนบไปกับทุกสิ่งที่แสดงองค์ประกอบ GUI ที่ฉันต้องการลดขนาด:
//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;
}
จากนั้นในOnGUI()
ฟังก์ชั่นที่แท้จริงฉันตั้งเมทริกซ์การแปลงทันที:
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}