如何从字节数组制作精灵?

Posted

技术标签:

【中文标题】如何从字节数组制作精灵?【英文标题】:How can I make a sprite from a byte array? 【发布时间】:2020-06-20 00:43:29 【问题描述】:

我有一个 Unity 游戏,玩家在开始游戏后从数据库中获取库存。 我得到了存储在 Firebase Storage 中的项目的图片,我可以下载它们。 但是,我不知道如何从我通过下载获得的 byte[] (fileContents) 制作精灵。 (稍后我会将这些精灵加载到玩家的物品栏中)

我得到了以下 C# 脚本:

private void getPlayersInventory()

  FirebaseDatabase.DefaultInstance.GetReference("users").Child(auth.CurrentUser.UserId)
    .Child("inventory").GetValueAsync().ContinueWith(task => 
    
      if (task.IsFaulted)
      
        print("unable to get snapshot for the inventory");
       
      else if (task.IsCompleted) 
      
        snapshot = task.Result;
        if(snapshot.HasChildren) 
        
          foreach(var current in snapshot.Children)
          
            string currentName = current.Value.ToString();
            print(currentName.ToLower() + ".png");
            const long maxAllowedSize = 10 * 1024 * 1024;
            storageReference.Child(currentName.ToLower() + ".png")
              .GetBytesAsync(maxAllowedSize)
              .ContinueWith((Task<byte[]> task_) => 
              
                if (task_.IsFaulted || task_.IsCanceled) 
                
                    Debug.Log(task_.Exception.ToString());
                 
                else 
                
                    byte[] fileContents = task_.Result;
                    Debug.Log("Finished downloading!");
                
              );
          
        
      
    );

【问题讨论】:

您是否尝试将其提取到local file? 我宁愿不将它提取到本地文件,因为整个方法对播放器应该是不可见的。 【参考方案1】:

相信你在找ImageConversion.LoadImage

您的完整代码如下所示:

var tex = new Texture(1,1); // note that the size is overridden
tex.LoadImage(task_.Result);
var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(tex.width/2, tex.height/2));

如果这是您的最终目标,您也可以在运行时 pack textures。一旦你通过了tex.LoadImage 块,你应该能够计算出Texture2D.PackTextures

--帕特里克

【讨论】:

以上是关于如何从字节数组制作精灵?的主要内容,如果未能解决你的问题,请参考以下文章

如何从字节数组创建位图?

如何制作一个前八个字节作为当前时间戳的字节数组?

如何通过使用 ByteBuffer 查看标头偏移量来制作字节数组?

NAudio C#:如何从 WaveInEventArgs 获取字节数组以进行进一步操作

C#如何从字节数组中提取字节?已知起始字节

Python:如何从 4 字节字节数组中获取 4 字节大小的整数?