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(字节)时崩溃了代码>。好的,日志上怎么说?两边的纹理大小和纹理格式是否相同?是的,两端的大小和纹理格式都相同,我得到的错误是:我们现在将尝试找到崩溃的修复方法。请稍候。。。状态:没有可用的修复程序。请报告一个错误。