【问题标题】:How to get steam avatar with steamworks in c#?如何在c#中使用steamworks获取steam头像?
【发布时间】:2018-04-03 15:45:10
【问题描述】:

我在 c# .NET 中编程我没有使用 Unity,我想通过 steamworks 收集玩家头像并将其放入图片框中。我做了一些事情,但不知道接下来会发生什么。我是 Steamworks 的新手,无法正确使用它。

var avatarInt = SteamFriends.GetMediumFriendAvatar(SteamUser.GetSteamID());
uint Width, Height;
SteamUtils.GetImageSize(avatarInt, out Width, out Height);
var abc_test = (SteamUser.GetSteamID().ToString());
byte[] avatarstream = new byte[4 * (int)Width * (int)Height];
SteamUtils.GetImageRGBA(avatarInt, avatarstream, 4 * (int)Width * (int)Height);

之前我对玩家的昵称做了类似的事情。

nick_steam.Text = SteamFriends.GetPersonaName(); 

【问题讨论】:

  • GetImageRGA 返回什么?
  • GetImageRGA 返回真。

标签: c# avatar steamworks-api


【解决方案1】:

来自 Steamworks github:

https://github.com/rlabrecque/Steamworks.NET-Test/blob/master/Assets/Scripts/SteamUtilsTest.cs

public static Texture2D GetSteamImageAsTexture2D(int iImage) {
    Texture2D ret = null;
    uint ImageWidth;
    uint ImageHeight;
    bool bIsValid = SteamUtils.GetImageSize(iImage, out ImageWidth, out ImageHeight);

    if (bIsValid) {
        byte[] Image = new byte[ImageWidth * ImageHeight * 4];

        bIsValid = SteamUtils.GetImageRGBA(iImage, Image, (int)(ImageWidth * ImageHeight * 4));
        if (bIsValid) {
            ret = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true);
            ret.LoadRawTextureData(Image);
            ret.Apply();
        }
    }

    return ret;
}

【讨论】:

  • 好的,谢谢,但我没有使用 Unity,也没有 Texture2D 功能。
  • 不确定,但也许您可以将其调整为其他与纹理相关的类,例如 Direct3D msdn.microsoft.com/en-us/library/windows/desktop/…
  • 好的,但是如果我在 Visual Studio 中使用 Unity angine,可以将纹理 2D 转换为图像吗?因为我为visual studio dll文件添加了Unity奉献,现在我可以使用Unity的所有功能了。
  • 查看是否公开Texture2D.LoadRawTextureData功能码
  • 我想我找到了解决问题的方法,但我必须对代码进行一些修改,然后检查它是否有效gamedev.net/forums/topic/494386-c---convert-texture2d-to-image
猜你喜欢
  • 2018-05-16
  • 2016-05-18
  • 1970-01-01
  • 2017-01-01
  • 2018-03-04
  • 2018-06-06
  • 2021-10-21
  • 2016-10-05
  • 2019-12-17
相关资源
最近更新 更多