logo
Khóa học lập trình game server - smartfox - game đa người chơi Học lập trinh game online 3dvietpro Sửa chữa và thiết kế website .net
Welcome Guest! To enable all features please Đăng nhập or Đăng ký.

Thông báo

Icon
Error

Tùy chọn
Xem
Xem bài viết cuối Go to first unread
admin  
#1 Đã gửi : 20/06/2019 lúc 11:01:27(UTC)
admin

Danh hiệu: Administration

Nhóm:
Gia nhập: 19-08-2014(UTC)
Bài viết: 145

Được cảm ơn: 7 lần trong 6 bài viết
Trong lúc các bạn lập trình UI cho giao diện unity, nhiều trường hợp các bạn phải xử lý tải ảnh về máy sau đó kiểm tra ảnh có tồn tại hay không để thực hiện lưu hoặc không lưu, sau đó load ảnh lên trên game.

Bài hướng dẫn này mình chia sẻ các bạn đoạn code thực hiện vấn đề trên, mình đã thực hiện biên dịch và test nhiều lần thấy ok, các bạn tham khảo nhé.

Dưới đây là đoạn code của mình, nếu đọc không hiểu các bạn vui lòng comment phía dưới mình sẽ giải đáp thắc mắc

Trích dẫn:
IEnumerator SaveAdsImg(string wwwPath, string path, Image img)
{
WWW www = new WWW(wwwPath);
yield return www;
if (www.error == null)
{
if (!WebFileExists(path))
{
// Create a texture in DXT1 format
Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.RGB24, false) as Texture2D;
// assign the downloaded image to sprite
www.LoadImageIntoTexture(texture);
Rect rec = new Rect(0, 0, texture.width, texture.height);
Sprite itemBGSprite = Sprite.Create(texture, rec, new Vector2(0.5f, 0.5f), 100);
if (img != null)
img.sprite = itemBGSprite;
Texture2D itemBGTex = itemBGSprite.texture;
byte[] itemBGBytes = itemBGTex.EncodeToPNG();
File.WriteAllBytes(path, itemBGBytes);
www.Dispose();
www = null;
}
else
{
// Create a texture in DXT1 format
Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.RGB24, false) as Texture2D;
// assign the downloaded image to sprite
www.LoadImageIntoTexture(texture);
Rect rec = new Rect(0, 0, texture.width, texture.height);
Sprite itemBGSprite = Sprite.Create(texture, rec, new Vector2(0.5f, 0.5f), 100);
if (img != null)
img.sprite = itemBGSprite;

}
}
}


Và cách các bạn gọi như sau

Trích dẫn:
StartCoroutine(SaveAdsImg(lstAlbums[i].Anh, path, objSlide.GetComponent<Image>()));


trong đó :
Trích dẫn:
string dirPath = @Application.persistentDataPath + "/BundleImgs/";
string path = dirPath + getImgName(Anh);


+ Hàm WebFileExists

Trích dẫn:
static public bool WebFileExists(string uri)
{
long fileLength = -1;
WebRequest request = HttpWebRequest.Create(uri);
request.Method = "HEAD";
WebResponse resp = null;
try
{
resp = request.GetResponse();
}
catch
{
resp = null;
}
if (resp != null)
{
long.TryParse(resp.Headers.Get("Content-Length"), out fileLength);
}
return fileLength > 0;
}


+ Hàm GetImgName
Trích dẫn:
string getImgName(string url)
{
Debug.Log("url:" + url);
string tmp = url.Substring(url.LastIndexOf("/") + 1, url.Length - url.LastIndexOf("/") - 1);
Debug.Log("name tmp:" + tmp);
if (tmp.Length < 3)
Debug.Log(" ten qua ngan" + url);
return tmp;
}

Đó là tất cả những bước thực hiện, bạn vui lòng check lại, một kỹ thuật đơn giản nhưng giúp các bạn nâng cao kinh nghiệm xử lý

Admin.

Sửa bởi người viết 20/07/2019 lúc 08:40:12(UTC)  | Lý do: Chưa rõ

Bạn bình luận ngay tại đây
Ai đang xem chủ đề này?
Guest (3)
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

Powered by YAF 2.1.0 | YAF © 2003-2024, Yet Another Forum.NET
Thời gian xử lý trang này hết 0.093 giây.