はWebCamTexture
からバイト配列へColor32
配列を変換する別の方法です:
まず、変換された配列を保持する構造を作成:変換する
[StructLayout(LayoutKind.Explicit)]
public struct Color32Array
{
[FieldOffset(0)]
public byte[] byteArray;
[FieldOffset(0)]
public Color32[] colors;
}
WebCamTexture
:
WebCamTexture webcamTex = new WebCamTexture();
を
その構造の新しいインスタンスを作成します。
適切なサイズと
Color32Array colorArray = new Color32Array();
初期化Color32:
colorArray.colors = new Color32[webcamTex.width * webcamTex.height];
が自動的にバイト配列を埋めるColor32
を埋めるには:
webcamTex.GetPixels32(colorArray.colors);
さて、あなたはバイト配列をあるcolorArray.byteArray
を使用することができます。テクスチャ2Dに
ロード必要な場合:
Texture2D tex = new Texture2D(2, 2);
tex.LoadRawTextureData(colorArray.byteArray);
tex.Apply();
私はそれは、その後にそれを送るJPEGまたはPNGに、その後Texture2D
にWebCamTexture
を変換する方が良いでしょう、私のcommentに言ったようにネットワーク。これにより、画像のサイズが小さくなります。詳細については、this答えを参照してください。
ネットワークを介してテクスチャを送信することは、実際には重く、帯域幅を無駄にします。それを送信する前にjpgまたはpngに変換してみませんか? [こちら](https://stackoverflow.com/questions/42717713/unity-live-video-streaming/42727918#42727918)の記事をご覧ください。 – Programmer