Unity Splash Image 与 Launch场景的背景图无缝衔接

注:unity版本5.2.2f1.

一、for android

1、图片的导入设置,确保图片的实际尺寸不被改变。
Texture Type: 没有能设置成Texture, 因为它的改变图片的实际尺寸。这点其实你可只要将Texture Type切换成Advanced类型。看看其中的Non Power of 2的是不是None。如果不是它都有可能改变你的图片的实际尺寸。
有没有被改变你可看看设置面板的下面的预览窗口中的所给出的尺寸是不是与你的图片本的尺寸一样就知道了。
2、PlayerSettings中设置
Splash Image --> Splash scaling 选择:scale to fill(cropped)。
自适应填充(裁切不正的)满屏显示。
它是按图片的尺寸均匀绽放图片的,超出屏幕外的部分将不显示。很自然只要图片的宽高比与手机屏幕的宽高比不一至,肯定有一方(或宽或高)要超出屏幕。明白这一点很重要,因我们在接下来的Launch场景中也要将对应的图片也绽放成这个样。
3、处理Launch场景中的对应的图片大小

原则上面的2,具体代码下面有给出

二、for ios

1、图片的导入设置,确保图片的实际尺寸不被改变。

同“for android”中的1。

2、PlayerSettings中设置

iphone Launch Screen –> Launch screen type 选择:None.
会将自动拉申图片的高宽到和手机的一样。

3、处理Launch场景中的对应的图片大小

只要保持对就的图片在场景的大小与屏幕一就为ok了。

三、代码

注意:要将场景中的img的RectTransform设置成如下图所示:
这里写图片描述

//[lzh]
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public RectTransform canvasRT;
    public Image img;
    public RectTransform imgRT;

    void Awake()
    {
        imgRT.anchorMin = Vector2.one * 0.5f;
        imgRT.anchorMax = Vector2.one * 0.5f;
        imgRT.pivot = Vector2.one * 0.5f;
    }

    // Use this for initialization
    void Start ()
    {
        ProcessBgImg();
    }


    void ProcessBgImg()
    {
        if(Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.WindowsEditor)
        {
            ProcessBgImg_for_android();
        }
        else if( Application.platform == RuntimePlatform.IPhonePlayer)
        {
            ProcessBgImg_for_android();
        }
    }


    void ProcessBgImg_for_android()
    {
        Vector2 spriteSize = new Vector2();
        Vector2 imgSize = new Vector2(img.sprite.texture.width, img.sprite.texture.height);//图片的实现大小
        Vector2 canvasSize = canvasRT.sizeDelta;    // 画布的大小,代码手机屏幕的大小
        if (imgSize.y / imgSize.x > canvasSize.y / canvasSize.x)
        {
            spriteSize.x = canvasSize.x;
            spriteSize.y = imgSize.y * (spriteSize.x / imgSize.x);
        }
        else
        {
            spriteSize.y = canvasSize.y;
            spriteSize.x = imgSize.x * (spriteSize.y / imgSize.y);
        }
        imgRT.sizeDelta = spriteSize;
    }

    void ProcessBgImg_for_ios()
    {
        Vector2 canvasSize = canvasRT.sizeDelta;
        imgRT.sizeDelta = canvasSize;
    }
}

四、demo

大家可build出来看看,没有任何的抖动哦。
下载

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿海-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值