Unity RawImage加载Image到底在什么时候用哪一种方法

先看看 RawImage加载Image的区别:

RawImage核心代码比Image少很多,Raw Image不支持交互,可用于显示任何图片而不仅仅是Sprite,一般用在背景、图标上,支持UV Rect(用来设置只显示图片的某一部分),而Image不支持UV Rect

前提:

从这可以看出当需要显示一张(外部)加载的图片时  切不用与之交互时

  这时候我们就看当地用哪一种方法显示了

直接说吧  我加载一张image分辨率 1000*1030 加载赋值一百次  所用时长

加载一张同样分辨率的图片  以RawImage赋值一百次  所用时长

差距自己计算,自己掂量一下该怎么使用

直接上测试代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test3 : MonoBehaviour {

    public Image ImageObject;

    public RawImage RawImageObject;

    public void OnClickImageButton() //Image组件赋值方法
    {
        var path = Application.streamingAssetsPath + "/1.jpg";//外部图片地址
        var tex = Download(path).texture;//使用www加载外部图片(这个方法是自己写的, 不会的话自己上网百度下)
        var time = Time.realtimeSinceStartup;
        for (var i = 0; i < 100; i++)
        {
            var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
            ImageObject.sprite = sprite;
        }
        Debug.Log("Image赋值100次使用时间: " + (Time.realtimeSinceStartup - time));
    }


    public void OnClickRawImageButton()//RawImage组件赋值方法
    {
        var path = Application.streamingAssetsPath + "/2.jpg";//外部图片地址
        var tex = Download(path).texture;//使用www加载外部图片(这个方法是自己写的, 不会的话自己上网百度下)
        var time = Time.realtimeSinceStartup;
        for (var i = 0; i < 100; i++)
            RawImageObject.texture = tex;
        Debug.Log("RawImage赋值100次使用时间: " + (Time.realtimeSinceStartup - time));
    }

    public  WWW Download(string path)
    {
        WWW  www = new WWW(path);

        YieldToStop(www);

        return www;
    }

    private  void YieldToStop(WWW www)
    {
        var @enum = DownloadEnumerator(www);
        while (@enum.MoveNext()) ;
    }

    private  IEnumerator DownloadEnumerator(WWW www)
    {
        while (!www.isDone) ;

        yield return www;
    }

}

猜你喜欢

转载自blog.csdn.net/chenzhe_n/article/details/81288367
今日推荐