RawImages图片加载方式

此篇博客介绍Unity中的RawImage组件扩展,包括资源加载方式(Resources, StreamAssets, 绝对路径),图片名称设置,以及不同显示模式(原始大小、拉伸铺满、按比例缩放)。展示了如何根据源模式动态调整图片显示效果。
摘要由CSDN通过智能技术生成

using UnityEngine;
using UnityEngine.UI;

public class RawImagesExtend : MonoBehaviour
{
[Header(“资源加载方式”)]
public SourceMode sourceMode;

public enum SourceMode
{
    Resources_loading,
    StreamAssets_loading,
    Absolute_loading
}

[Header("写入图片名称")]
public string rawImageSource;

[Header("控制图片显示样式")]
public DisplayMode displayMode;

public static RawImagesExtend instance;

public enum DisplayMode
{
    //原始大小
    OriginalSize,
    //图片拉伸铺满
    Bespread,
    //按宽比例
    ProportionWidth,
    //按高比例
    ProportionHeight

}

void Style()
{
    //原始大小
    if (displayMode == DisplayMode.OriginalSize)
    {
        this.GetComponent<RawImage>().SetNativeSize();
    }
    else if (displayMode == DisplayMode.Bespread)
    {
        //平铺
        gameObject.GetComponent<RawImage>().rectTransform.sizeDelta = new Vector2(gameObject.GetComponent<RectTransform>().rect.width, gameObject.GetComponent<RectTransform>().rect.height);
    }
    else if (displayMode == DisplayMode.ProportionWidth)
    {
        //按宽比例
        gameObject.GetComponent<RawImage>().rectTransform.sizeDelta = new Vector2(gameObject.GetComponent<RectTransform>().rect.width, gameObject.GetComponent<RectTransform>().rect.width / gameObject.GetComponent<RawImage>().texture.width * gameObject.GetComponent<RawImage>().texture.height);
    }
    else if (displayMode == DisplayMode.ProportionHeight)
    {
        //按高比例
        gameObject.GetComponent<RawImage>().rectTransform.sizeDelta = new Vector2(gameObject.GetComponent<RectTransform>().rect.height / gameObject.GetComponent<RawImage>().texture.height * gameObject.GetComponent<RawImage>().texture.width, gameObject.GetComponent<RectTransform>().rect.height);
    }
}

void Awake()
{
    instance = this;
}

public void RawImgExtend()
{
    //Resources文件读取
    if (sourceMode == SourceMode.Resources_loading)
    {
        GetComponent<RawImage>().texture = Resources.Load(rawImageSource) as Texture;
        Style();
    }
    //StreamAssets文件读取
    else if (sourceMode == SourceMode.StreamAssets_loading)
    {

        ResourceMgrImg.instance.LoadImageData(rawImageSource, _textre =>
        {
            Texture ass = _textre as Texture;
            this.GetComponent<RawImage>().texture = ass;
            Style();
        });
    }
    //绝对路径读取
    else if (sourceMode == SourceMode.Absolute_loading)
    {
        StartCoroutine(ResourceMgrImg.instance.LoadWWWTexture(rawImageSource, _textre =>
        {
            GetComponent<RawImage>().texture = _textre;
            Style();
        }));
    }
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值