1. 程式人生 > >Unity3D -- 自定義範圍截圖

Unity3D -- 自定義範圍截圖

大家都知道unity有一個截圖方法,呼叫Application.CaptureScreenshot("Screenshot.png")方法就可以擷取一張圖儲存到Application.persistentDataPath+"/Screenshot.png",  但是如果你只是想擷取螢幕固定部分的內容怎麼辦呢,而且那個固定部分還是使用程式動態算出來的,這個時候使用全屏擷取就會有錯誤了。

Unity是可以實現擷取固定位置螢幕的。

首先在UI下面建立一個面板,


基於父物件中心對齊,然後長寬自由設定,

在父物件中宣告一個publicRectTransformBackGround 變數,然後將上面設定的面板關聯到BackGround。


程式執行是ShareUI設定面板大小

m_Height=Screen.height;
m_Width=m_Height*m_Height/Screen.width;
BackGround.sizeDelta=newVector2(m_Width,m_Height);

這個可以隨意設定。

然後開始截圖了。下面是程式碼:

Rect m_Rect;

voidStart()
{
m_Height=Screen.height;
m_Width=m_Height*m_Height/Screen.width;
BackGround.sizeDelta=newVector2(m_Width,m_Height);
m_Rect
=newRect();
Vector3[]fourCornersArray=newVector3[4];

BackGround.GetWorldCorners(fourCornersArray);

m_Rect.width=fourCornersArray[2].x-fourCornersArray[0].x;
m_Rect.height=fourCornersArray[2].y-fourCornersArray[0].y;
m_Scale=BackGround.sizeDelta.x/m_Rect.width;
m_Rect.width=BackGround.sizeDelta.x;
m_Rect.height
=BackGround.sizeDelta.y;
m_Rect.x=Screen.width*0.5f-m_Rect.width/2;
m_Rect.y=Screen.height*0.5f-m_Rect.height/2;
}
IEnumeratorScreenshot()
{
yieldreturnnewWaitForEndOfFrame();
BackGround.localScale=newVector3(m_Scale,m_Scale,m_Scale);
Texture2DscreenShot=newTexture2D((int)m_Rect.width,(int)m_Rect.height,TextureFormat.RGB24,false);
screenShot.ReadPixels(m_Rect,0,0);
screenShot.Apply();
byte[]bytes=screenShot.EncodeToPNG();
stringfilename=Application.persistentDataPath+"/Screenshot.png";
        System.IO.File.WriteAllBytes(filename,bytes);
Invoke("Share",2f);
}

這樣在需要截圖的時候呼叫StartCoroutine(Screenshot());同樣地就在Application.persistentDataPath+"/Screenshot.png";  路徑下儲存了一份截圖檔案。分享時將這種圖片分享就可以了。

——Rocky

相關推薦

Unity3D -- 定義範圍

大家都知道unity有一個截圖方法,呼叫Application.CaptureScreenshot("Screenshot.png")方法就可以擷取一張圖儲存到Application.persiste

Python定義大小

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Unity3D攝像機帶透明

void ctu end 攝像機 sin upd () byte lan 轉載請註明出處:http://www.cnblogs.com/shamoyuu/p/CropCamera.html ↓↓↓下面的廢話可以不看↓&darr

angularjs1 制作定義輪播(漢字導航)

auto tran 成就 ont webkit eight sse pos nta 本來想用swiper插件的,可是需求居然說要漢字當導航欄這就沒辦法了,只能自己寫。 directive // 自定義指令: Home頁面的輪播圖 app.directive(‘swi

小程序定義輪播

tran index scroll false ges als -a ndt -s 話不多說,上圖上代碼。 wxml <view style="white-space: nowrap;" class="box" bindtouchstart="touchstart

Unity3D定義資源配置文件

想要 說明 設計 子彈 數值 我們 ret 似的 復制 http://blog.csdn.net/candycat1992/article/details/52181814 寫在前面 我竟然最近兩天才知道Unity中ScriptableObject的存在…… 看了下Sc

如何定義echarts 線性的選擇事件

其他 prop 改變 first ger key gpo urn alt 最近在做公司的數據大盤,要用到圖表顯示,echarts研二的時候有用過,我就決定用它了。 這裏用到一個可以同時顯示多條曲線的line-charts,基本樣子如下:

Android 定義柱狀及屬性動畫

前段時間公司專案中用到了統計圖,網上找了些資料和框架都不能滿足我的需求,沒辦法,只有自己寫了。 近來清閒,將其抽出一個demo了,歡迎大家交流指正。 效果圖先行 實現方案有兩個,一是自定義控制元件,二是使用屬性動畫。屬性動畫在api11以上版本才有,在11版本以下使用可以引入nin

Threejs ShapeGeometry定義形狀貼

最近專案需要在3D場景中給自定義的樓層區域進行貼圖區分,對於普通的的純色材質,實現比較簡單,但是如果要進行紋理貼圖的材質,就有點複雜了,這裡寫篇文章記錄下。 首先看看我們的樓層定義,如何實現自定義區域。其實很簡單,我們使用有序的點來定義樓層的平面形狀,然後根據平面的定義,自動生成3d的平面區域。

定義輪播(banner

public class MyBannerActivity extends AppCompatActivity { private String[] picUrl = { "https://img.huxiucdn.com/article/c

Unity3D 定義編輯器介面(Inspector)

今天看一個指令碼,本想看看在 Inspector 介面的變數在腳本里的用途,然後查詢變數名的時候怎麼也找不到,自己也是驚訝。通過網上搜索才瞭解到原來 Inspector介面 是可以自己定義的。 當然自己定義,當然也需要寫一個指令碼來改的。可能是為了讓介面整潔的目的。 首先

定義餅狀控制元件PieView

本篇參考:GcsSloop的安卓自定義View進階-Canvas之繪製圖形 一、分析如上餅狀圖,所需要得資訊如下 各塊的顏色 所有塊量得總和 各個塊得量佔總量的百分比,並通過百分比得到各個塊所佔扇形的弧度 第一個塊得起始角

定義輪播

//mainactivity public class B1Fragment extends Fragment { //圖片陣列 private int[] mPic=new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mi

Unity3d中簡單的功能

首先,新建兩個場景,Scene1 在Scene1中新增一個Button。在Canvas繫結如下指令碼:     public Button but;     void Start ()     {         but = GameObject.Find ("

arcgis api for js之定義範圍查詢

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自定義範圍</title> <!-

利用androidStudio帶的工具,不在用手機然後傳到電腦上了

相信各位android程式設計師平時在和測試妹紙,運營,合作伙伴溝通的時候經常需要把手機上APP的效果圖發給對方,那麼平時我們繁瑣的操作步驟就是 手機截圖-> 分享到電腦QQ -> 轉發

定義輪播(glide載入)

CustomBanner compile 'com.github.bumptech.glide:glide:3.7.0' public class CustomBanner extends FrameLayout implements ViewPa

android定義柱狀

本程式碼是一年前公司專案需要自己所寫,當時做android專案需要統計的功能,統計的圖表包括餅圖、柱狀圖、折線圖,程式碼寫的有些笨拙!希望大家能夠看懂!其程式碼做拋磚引玉,希望大家能夠再改寫下!可以用多執行緒做出動畫,是不是更好呢?這些後期我也沒有整理過,所以誰能再整理下!

android定義統計折線和柱狀組合

本程式碼是一年前公司專案需要自己所寫,當時做android專案需要統計的功能,統計的圖表包括餅圖、柱狀圖、折線圖,程式碼寫的有些笨拙!希望大家能夠看懂!其程式碼做拋磚引玉,希望大家能夠再改寫下!可以用多執行緒做出動畫,是不是更好呢?這些後期我也沒有整理過,所以誰能再整理下!

定義餅狀

自定義ViewGroup基本步驟 寫構造方法 寫onLayout 確定子View的位置 onMesure 根據子View的佈局檔案確定子View的大小,及位置 測量分為三種 EXACTLY 300dp matchPar