根據(jù)圖片路徑動(dòng)態(tài)更改Image的顯示

using System.Collections;

using System.Collections.Generic;

using System.IO;

using UnityEngine;

using UnityEngine.UI;

[RequireComponent(typeof(Image))]

public class ImageLoader : MonoBehaviour

{

? ? [SerializeField]

? ? private string _relativePath;

? ? private Texture2D _texture;

? ? private Image _img;

? ? public string RelativePath

? ? {

? ? ? ? get { return _relativePath; }

? ? ? ? set {

? ? ? ? ? ? _relativePath = value;

? ? ? ? ? ? ReLoadImage();

? ? ? ? }

? ? }

? ? private void Awake()

? ? {

? ? ? ? _img = GetComponent<Image>();

? ? }

? ? void Start()

? ? {

? ? ? ? ReLoadImage();

? ? }

? ? public void ReLoadImage()

? ? {

? ? ? ? if (!string.IsNullOrEmpty(_relativePath))

? ? ? ? {

? ? ? ? ? ? var data = ReadPNG(_relativePath);

? ? ? ? ? ? if (data != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? _texture = new Texture2D(1, 1);

? ? ? ? ? ? ? ? _texture.LoadImage(data);

? ? ? ? ? ? ? ? _img.sprite = Sprite.Create(_texture, new Rect(0, 0, _texture.width, _texture.height), new Vector2(0, 0));

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? _img.sprite = null;

? ? }

? ? private byte[] ReadPNG(string path)

? ? {

? ? ? ? string fullPath = path;

? ? ? ? if (!string.IsNullOrEmpty(fullPath))

? ? ? ? {

? ? ? ? ? ? FileStream fileStream = new FileStream(fullPath, FileMode.Open, System.IO.FileAccess.Read);

? ? ? ? ? ? fileStream.Seek(0, SeekOrigin.Begin);

? ? ? ? ? ? byte[] binary = new byte[fileStream.Length];?

? ? ? ? ? ? fileStream.Read(binary, 0, (int)fileStream.Length);

? ? ? ? ? ? fileStream.Close();

? ? ? ? ? ? fileStream.Dispose();

? ? ? ? ? ? fileStream = null;

? ? ? ? ? ? return binary;

? ? ? ? }

? ? ? ? return null;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容