(如果你有更好的脚本具有相同的功能,我接受所有无论c#或javascript)
[我的偏好决议是1366 x 768]
我现在不知道该做什么,使用这个c#(c sharp)脚本我可以使用任何分辨率宽度大小计算任何对象,但是当我更改分辨率高度大小(从768开始)时,对象调整大小错误方式,这是我的c#(c sharp)脚本:(抱歉我在发布代码时因错误而使用片段!)
using UnityEngine;
using System.Collections;
public class guicontrol : MonoBehaviour {
void CalculateResolution(string ObjectName) {
GameObject theobject = GameObject.Find (ObjectName);
float selectedwidth = 1366;
float selectedheight = 768;
float objectscaley = theobject.transform.localScale.y;
float objectscalex = theobject.transform.localScale.x;
Debug.Log ("current object [ x : " + objectscalex + " | y : " + objectscaley + " ] ");
float screenwidth = Screen.width;
float screenheight = Screen.height;
float coordinatey = theobject.transform.localPosition.y;
float coordinatex = theobject.transform.localPosition.x;
Debug.Log ("work at current stats : " + screenwidth + " " + screenheight);
if (screenwidth != selectedwidth || screenheight != selectedheight) {
float halfthree = 1 / 3;
float coordinateytomove = (screenheight / selectedheight) * coordinatey;
float coordinatextomove = (screenwidth / selectedwidth) * coordinatex;
theobject.transform.position = new Vector2 (coordinatextomove, coordinateytomove);
Debug.Log (coordinateytomove + " " + coordinatextomove);
float scaleytochange = (screenheight / selectedheight) * objectscaley;
float scalextochange = (screenwidth / selectedwidth) * objectscalex;
theobject.transform.localScale = new Vector2 (scalextochange, scaleytochange);
Debug.Log (scaleytochange + " " + scalextochange);
}
}
// Use this for initialization
void Start () {
Debug.Log ("current position of startbox : " + transform.localPosition);
Debug.Log ("current screen resolution : " + Screen.currentResolution);
Debug.Log ("current screen width : " + Screen.width);
Debug.Log ("current screen height : " + Screen.height);
CalculateResolution ("startbox");
CalculateResolution ("background");
}
// Update is called once per frame
void Update () {
}
}
如果有任何先前的帖子回答这个告诉我!或给我更好的脚本(javascript或c sharp我接受)但仍然具有相同的功能请:)。
屏幕截图:
(1024 x 768)
(300 x 768)
(1024 x 600)(错误)
你可以在屏幕截图中看到不同,任何帮助将不胜感激! :)。
已编辑!
编辑! 2016年1月10日
当我使用canvas并从任何对象中删除我的脚本时,画布只做最糟糕的事情,它的工作正常的偏好分辨率(1366 x 768),但当我改变分辨率时,它在分辨率1024 x 768(之前的工作)中做错了)(查找1024 x 768与脚本一起使用的屏幕截图)
答案 0 :(得分:0)
这一切都是不必要的。从Unity 4.6开始,如果要创建按钮,请使用Button
组件。使用新的Unity UI。如果要显示UI图像,请使用Image或RawImage组件。
您应该使用SpriteRenderer
的唯一时间是图像是角色或环境的一部分,与角色发生碰撞并且还需要使用Rigidbody。如果图像只是作为UI或背景而不与任何内容发生碰撞,则需要使用UI代替SpriteRenderer
来执行此操作。
使用UI时,您可以轻松地使用Canvas Scaler
,锚点和轴心点自动调整大小,而无需编写任何代码。 Canvas Scaler会自动将图像调整为任何屏幕大小。
要在Unity中创建简单的按钮,请转到 GameObject - > UI - > 按钮。 这是Unity UI的教程。
您还可以看到UI TOOLS: RESOLUTION & DEVICE INDEPENDENCE。它显示了为任何设备自动调整UI大小的方法。