关于Unity 2d Android上使用Transform.scale进行适配的一种方法

504 阅读1分钟

image.png

image.png

最近写Unity小游戏,微信小程序上没有变形,但是导出为Android项目运行后,图标变形了。遂搜索了一下适配方法,结果都是RectTransform 适配。由于懒的改组件,于是想过改变缩放的形式进行适配。

image.png

unity 在Android 端设置全屏时,会对预设宽高缩放进行自动适配,由于Android屏幕的多样化,因此会产生宽高缩放比例不同的原因导致图片会产生上下或左右拉伸,因此可以调整Obejct Scale实现由于Unity 自动适配导致的拉伸问题。

具体思路为,首先求出屏幕宽高与预设宽高的比值,然后根据此比值求出Scale的值的缩放比例,缩放比例根据原始缩放值与宽高比求出,取其中的最小值进行宽高的缩放,下面为示例代码:

var widthbaseRatio=BASE_WIDTH / Screen.width;
var heightbaseRatio=BASE_HEIGHT / Screen.height;


Debug.Log("屏幕信息new "+Screen.height+"  "+Screen.width +"  "+widthbaseRatio +" "+heightbaseRatio+" "+m_tranform.localScale.x+"  "+m_tranform.localScale.y);



float ratio = Mathf.Min(1 / widthbaseRatio, 1 / heightbaseRatio);

m_tranform.localScale = new Vector3(m_tranform.localScale.x*widthbaseRatio*ratio , m_tranform.localScale.y*heightbaseRatio*ratio, 1);