2013-07-25 22 views
11

Tôi có một trò chơi những gì tôi đã thực hiện ở độ phân giải 480x320 (tôi đã đặt nó trong cài đặt xây dựng) trong Unity. Nhưng tôi muốn xuất bản trò chơi của mình cho mọi thiết bị Android với mọi độ phân giải. Làm thế nào tôi có thể làm điều đó, để nói với Unity để quy mô trò chơi của tôi lên đến độ phân giải của thiết bị? Có thể làm được không?Tôi làm cách nào để mã trò chơi của mình hoạt động trên mọi độ phân giải của thiết bị Android? (với Unity)

Cảm ơn trước!

Trả lời

16

Câu trả lời cho câu hỏi của bạn phần lớn phụ thuộc vào cách bạn đã triển khai trò chơi. Nếu bạn đã tạo nó bằng cách sử dụng kết cấu GUI, thì phần lớn phụ thuộc vào cách bạn đặt/kích thước đối tượng của bạn so với kích thước màn hình, điều này làm cho mọi thứ trở nên khó khăn một chút.

Nếu phần lớn trò chơi của bạn được thực hiện bằng cách sử dụng các đối tượng (chẳng hạn như máy bay, hình khối, v.v.) thì có hai phương pháp tôi thường chọn để sử dụng.

1) Phương pháp đầu tiên rất dễ thực hiện, mặc dù không phải lúc nào cũng quá tốt. Bạn chỉ có thể thay đổi tỷ lệ khung hình của máy ảnh để phù hợp với tỷ lệ khung hình bạn đã thiết kế trò chơi của mình. Vì vậy, trong trường hợp của bạn, vì bạn đã thiết kế trò chơi của bạn ở 4: 3, bạn muốn làm điều gì đó như thế này:

Camera.aspect = 4f/3f; 

Tuy nhiên, nếu ai đó đang chơi trên một màn hình dành cho 16: 9, trò chơi sẽ kết thúc nhìn méo mó và kéo dài.

2) Phương pháp thứ hai không dễ dàng, đòi hỏi khá nhiều công việc và tính toán, nhưng sẽ cung cấp kết quả tìm kiếm rõ ràng hơn cho bạn. Nếu bạn đang sử dụng máy ảnh chỉnh hình, một điều quan trọng cần lưu ý là bất kể độ phân giải màn hình đang được sử dụng, máy ảnh chỉnh hình giữ chiều cao ở độ cao đã đặt và chỉ thay đổi chiều rộng. Ví dụ: với máy ảnh chỉnh hình có kích thước 10, chiều cao sẽ được đặt thành 2. Với điều này, điều bạn cần làm là bù cho máy ảnh rộng nhất có thể trong mỗi cấp (ví dụ: có nền rộng) hoặc tự động thay đổi Kích thước chính xác của máy ảnh cho đến khi chiều rộng của nó khớp với những gì bạn đã tạo.

Nếu bạn đã thực hiện một trò chơi 3d với một máy ảnh lập thể, độ phân giải màn hình nên không thực sự ảnh hưởng đến cách hiển thị, nhưng tôi đoán rằng phụ thuộc vào các trò chơi, thông tin vì vậy nhiều sẽ được yêu cầu

+0

tôi thực hiện một trò chơi sử dụng các đối tượng (hình khối, hình cầu). Trò chơi này là một trò chơi 2D được thực hiện trong thế giới 3D Unity. – Zwiebel

+0

nếu đó là 2D thì bạn phải sử dụng máy ảnh chỉnh hình, vì vậy chỉ cần làm theo các mẹo mà tôi đã đưa ra cho điều đó. –

9

The way i đã làm là thay đổi camera viewport theo tỉ lệ thiết bị Cân nhắc bạn thực hiện các trò chơi cho 800x1280

các bạn có thể làm điều này trong bất kỳ một trong những kịch bản

float xFactor = Screen.width/800f; 
float yFactor = Screen.height/1280f; 


Camera.main.rect=new Rect(0,0,1,xFactor/yFactor); 

và điều này hoạt động giống như ma thuật

+1

Guys này là kinda buggy, bị bệnh đề nghị sử dụng câu trả lời của @Nelson Áo, – Rohit

1

Cách dễ dàng để thực hiện việc này là xem xét mục tiêu của bạn, ý tôi là nếu bạn đang thực hiện trò chơi cho Iphone 5 thì tỷ lệ khung hình là 9:16 v hoặc 16: 9 giờ.

public float targetRatio = 9f/16f; //The aspect ratio you did for the game. 
void Start() 
{ 
    Camera cam = GetComponent<Camera>(); 
    cam.aspect = targetRatio; 
} 
-1

Giải pháp tốt nhất cho tôi là sử dụng định lý của các đường giao nhau để không bị cắt ở hai bên cũng như không bị biến dạng của chế độ xem trò chơi. Điều đó có nghĩa là bạn phải lùi lại hoặc tiến lên tùy thuộc vào tỷ lệ cỡ ảnh khác nhau.

Nếu bạn thích, tôi có an asset on the Unity asset store tự động sửa khoảng cách máy ảnh để bạn không bao giờ bị biến dạng hoặc bị cắt bất kể thiết bị cầm tay bạn đang sử dụng.

1

Đây là kịch bản của tôi để mở rộng camera ortographic trong các trò chơi 2D

public float screenHeight = 1920f; 
public float screenWidth = 1080f; 
public float targetAspect = 9f/16f; 
public float orthographicSize; 
private Camera mainCamera; 

// Use this for initialization 
void Start() { 

    // Initialize variables 
    mainCamera = Camera.main; 
    orthographicSize = mainCamera.orthographicSize; 

    // Calculating ortographic width 
    float orthoWidth = orthographicSize/screenHeight * screenWidth; 
    // Setting aspect ration 
    orthoWidth = orthoWidth/(targetAspect/mainCamera.aspect); 
    // Setting Size 
    Camera.main.orthographicSize = (orthoWidth/Screen.width * Screen.height); 
} 
Các vấn đề liên quan