Unity 如何在 PlayerPrefs 中保存数据?

问题描述 投票:0回答:1

我想从独立 WPF 应用程序的注册表中读取数据,该应用程序是使用 PlayerPrefs 在 Unity 上的游戏中创建的。问题是如何将 float 作为 DWORD32 读取和写入注册表。

public static float Int64ToFloat(long value)
{
    byte[] bytes = BitConverter.GetBytes(value);
    byte[] floatBytes = new byte[4];
        
    Array.Copy(bytes, floatBytes, 4);

    if (BitConverter.IsLittleEndian)
                Array.Reverse(floatBytes);

    float floatValue = BitConverter.ToSingle(floatBytes, 0);

    return floatValue;
}

此代码返回极小的值,例如 1.35E-43。

c# unity-game-engine registry
1个回答
0
投票

整数类型和浮点数的表示方法不同。

举个例子 整数类型可以转换为直观的二进制格式,如下所示: 整数 11 = 00001011

但是。 浮点表示略有不同。

我们以8位数字为例。 01011111 该数字的前 4 位代表一个整数 0101=5 最后 4 位数字的计算方式如下: 1111 = 0.5 + 0.25 + 0.125 + 0.0625 每个数字代表 2 的 -n 次方。

如果想截去一部分long类型作为整数使用,而将后面的数字作为小数存储在float类型中,还有下面的方法。

int n = 17012165
float f = n / 10000 // 1701.2165f
© www.soinside.com 2019 - 2024. All rights reserved.