C# 如何在Unity中通过网络发送Texture2D?

C# 如何在Unity中通过网络发送Texture2D?,c#,unity3d,texture2d,photon,C#,Unity3d,Texture2d,Photon,因此,我有一个游戏,玩家必须使用Texture2D,我需要为其他玩家发送Texture2D,但是onPhotonSerializeView不适用于此,因为异常:无法序列化():UnityEngine.Texture2D 我在网站上找到了,但我真的不明白,所以也许有人可以帮忙 我的代码: private Texture2D DrawingSection; private void Awake() { DrawingSection = GameObject.Find("Canvas/pan

因此,我有一个游戏,玩家必须使用
Texture2D
,我需要为其他玩家发送
Texture2D
,但是
onPhotonSerializeView
不适用于此,因为
异常:无法序列化():UnityEngine.Texture2D

我在网站上找到了,但我真的不明白,所以也许有人可以帮忙

我的代码:

private Texture2D DrawingSection;

private void Awake()
{
    DrawingSection = GameObject.Find("Canvas/pan_Background/pan_DrawingSection").GetComponent<Texture2D>();
}

private void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
    if (stream.isWriting)
    {
        if (photonView.isMine)
        {
           stream.SendNext(DrawingSection);
        }
    }
    else
    {
        DrawingSection = (Texture2D)stream.ReceiveNext();
    }
}
私有纹理2D绘图部分;
私人空间
{
DrawingSection=GameObject.Find(“Canvas/pan_Background/pan_DrawingSection”).GetComponent();
}
private void OnPhotonSerializeView(PhotonStream流、PhotonMessageInfo信息)
{
if(stream.isWriting)
{
if(photonView.isMine)
{
stream.SendNext(绘图段);
}
}
其他的
{
DrawingSection=(Texture2D)stream.ReceiveNext();
}
}

由于无法发送
纹理2D
,因此需要通过执行以下操作将其转换为
字节[]

var bytes = DrawingSection.EncodeToPNG();
然后像这样发送字节

stream.SendNext(bytes);
读取字节时,您将收到一个
字节[]

var bytes = (byte[])stream.ReceiveNext();
然后需要将
字节[]
解析为
纹理2d

这可能会起作用,我假设双方都有相同的
TextureFormat
和大小

DrawingSection.LoadImage(bytes);

感谢您的回复,但我尝试了您的解决方案,当我调用
DrawingSection.LoadImage(字节)时崩溃了。好的,日志上怎么说?两边的纹理大小和纹理格式是否相同?是的,两端的大小和纹理格式都相同,我得到的错误是:我们现在将尝试找到崩溃的修复方法。请稍候。。。状态:没有可用的修复程序。请报告一个错误。