這篇文章主要介紹Unity如何在任意區(qū)域截屏創(chuàng)建Sprite,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
公司專注于為企業(yè)提供成都網(wǎng)站建設、網(wǎng)站建設、微信公眾號開發(fā)、商城網(wǎng)站制作,小程序設計,軟件定制網(wǎng)站開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。
Unity截取全屏靜幀的方法較為簡單這里不作討論,指定區(qū)域截圖用到的最主要的方法就是讀取屏幕像素:
// // 摘要: // Read pixels from screen into the saved texture data. // // 參數(shù): // source: // Rectangular region of the view to read from. Pixels are read from current render // target. // // destX: // Horizontal pixel position in the texture to place the pixels that are read. // // destY: // Vertical pixel position in the texture to place the pixels that are read. // // recalculateMipMaps: // Should the texture's mipmaps be recalculated after reading? public void ReadPixels(Rect source, int destX, int destY, [DefaultValue("true")] bool recalculateMipMaps); [ExcludeFromDocs] public void ReadPixels(Rect source, int destX, int destY);
為了方便調用,寫一個擴展協(xié)程如下:
public static IEnumerator CutSpriteFromScreen(this RectTransform boxMin, RectTransform boxMax, UnityAction<Sprite> complete)
{
var sp = new Vector2(boxMin.position.x, boxMin.position.y);
var temp = new Vector2(boxMax.position.x, boxMax.position.y);
Vector2Int size = new Vector2Int((int)(temp.x - sp.x), (int)(temp.y - sp.y));
//判斷截圖框是否超出屏幕邊界
if (sp.x < 0 || sp.y < 0 || sp.x + size.x > Screen.width || sp.y + size.y > Screen.height)
yield break;
//等待當前幀渲染結束,此為必須項
yield return new WaitForEndOfFrame();
Texture2D texture = new Texture2D(size.x, size.y, TextureFormat.RGB24, false);
texture.ReadPixels(new Rect(sp.x, sp.y, size.x, size.y), 0, 0, false);
texture.Apply();
complete(Sprite.Create(texture, new Rect(Vector2Int.zero, size), Vector2.one * .5f));
}
調用如下:
StartCoroutine(BoxMin.CutSpriteFromScreen(BoxMax, (x) => GameData.Instance.PlayerData.Bag.FragCutIcon = x));
效果展示:
可以直接將拼好的芯片圖截取后保存起來方便在其他界面展示安裝效果,省去了每一界面都劃格子重新讀取數(shù)據(jù)計算一遍;
因為事實上只有在設置芯片的頁面才需要單獨對每塊芯片進行細致操作,其他位置可以簡化為展示一張縮略圖;
當芯片的安裝發(fā)生變化時,同步更新該縮略圖即可。
以上是“Unity如何在任意區(qū)域截屏創(chuàng)建Sprite”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當前題目:Unity如何在任意區(qū)域截屏創(chuàng)建Sprite
網(wǎng)頁URL:http://jinyejixie.com/article0/jopiio.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、品牌網(wǎng)站制作、網(wǎng)站設計公司、用戶體驗、網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)