Android ile karşılaşacağınız bir sorun, her farklı cihazın kendi ekran boyutuna, çözünürlüğüne ve piksel yoğunluğuna sahip olmasıdır. Oyununuzun tüm cihazlarda aynı görünmesini istiyorsanız, çok fazla iş içindesiniz ve muhtemelen sonuçlardan asla memnun olmayacaksınız. Oyun geniş ekranlarda uzatılmış veya geniş ekran olmayanlarda sıkıştırılmış olarak görünecektir. Neyin gerçekten önemli olduğuna karar vermenizi ve başka bir şeyin biraz kaymasına izin vermenizi öneririm.
Oyununuzun ne olduğu ve neye benzediği hakkında herhangi bir ekran görüntüsü veya bilgi olmadan, hepimiz çözümler üzerinde spekülasyon yapabiliriz, ancak size özel bir danışmanlık vermek için belirli bir yönümüz yoktur.
Unity'de geçerli ekranın boyutlarına Screen sınıfı: Screen.width
ve Screen.height
(diğer özelliklerin yanı sıra) ile erişebilirsiniz . Ardından , ekran boyutlarına ve neyin görünür olması gerektiğine ilişkin kişisel beklentinize bağlı olarak farklı boyutlu ekranlarınızda görünenleri değiştirmek için Kameranın en boy oranını değiştirebilirsiniz.
Herhangi bir HUD ekranının doğru şekilde ölçeklendiğinden emin olmanız gerekiyorsa, bunu her işlevdeki ekran boyutlarına göre GUI dönüşüm matrisini değiştirerek yapabilirsiniz OnGUI()
. Bu basit komut dosyasını yaparak ve ölçeklemek istediğim GUI öğelerini işleyen herhangi bir şeye ekleyerek daha önce yaptım:
//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;
}
Ardından, gerçek OnGUI()
işlev (ler) de, dönüştürme matrisini hemen ayarladım:
function OnGUI()
{
GUI.matrix = guiScale.GetGUIMatrix();
/* Everything Else */
}