dddeft 2024-03-14 17:18 采纳率: 50%
浏览 218

Unity转Webgl playerprefs问题

img

img


这边第一次打开游戏就直接读存档了 我打包的微信小程序端没问题 怎么一到webgl就这样了

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-03-14 17:19
    关注

    dddeft 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    根据你提供的代码,有可能在Unity转WebGL时出现了PlayerPrefs读取失败的问题。以下是几种可能的解决方案:

    1. 确保在WebGL平台上使用PlayerPrefs功能时已启用了相应的权限。请打开Unity编辑器的Player Settings,在WebGL平台的设置中,确保勾选了Player Settings → Publishing Settings → Player permission → PlayerPrefs。

    2. 尝试清除浏览器缓存。有时候,浏览器可能会缓存旧的WebGL构建文件,导致PlayerPrefs读取失败。**请在浏览器中按下Ctrl + Shift + Delete组合键,然后选择清除缓存选项。**然后重新加载WebGL游戏,看看是否能够正确读取PlayerPrefs。

    3. 使用不同的浏览器进行测试。有时候,特定的浏览器可能会导致PlayerPrefs读取失败。尝试在不同的浏览器(如Chrome、Firefox、Safari等)中运行WebGL游戏,看看问题是否仅限于特定的浏览器。

    4. 考虑使用其他方法替代PlayerPrefs。在WebGL平台上,PlayerPrefs可能存在一些限制。考虑尝试使用其他方法,如使用PlayerPrefs的替代库(如IndexedDB)来保存和读取数据。

    以下是修改后的代码示例(使用IndexedDB替代PlayerPrefs):

    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;
    using System.Runtime.InteropServices;
    
    public class WebGLPlayerPrefs : MonoBehaviour
    {
        [DllImport("__Internal")]
        private static extern void SaveData(string key, string value);
    
        [DllImport("__Internal")]
        private static extern string LoadData(string key);
    
        private void Start()
        {
            ReadData();
        }
    
        private void ReadData()
        {
            string data = LoadData("data");
            if (!string.IsNullOrEmpty(data))
            {
                Debug.Log("读取数据成功!" + data);
                this.data = JsonUtility.FromJson<PlayerData>(data);
                Debug.Log("speed:" + this.data.speed);
            }
            else
            {
                this.data = new PlayerData();
                SaveData("data", JsonUtility.ToJson(this.data));
                Debug.Log("新建数据成功!");
            }
        }
    }
    

    希望以上解决方案能够帮助你解决问题。如果问题仍然存在,请提供更多的信息,以便我们进一步帮助你。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月14日