untiy初识之playerPrefs 和jsonUtility结合存储数据

playerPrefs 可以将数据存储到本地。cocos egret 都有类似的 比如egret的 localstorage

playerprefs 函数比较少,只用来做存储用

这里写图片描述

json utility 例子

using System;

[Serializable]
public class PlayerInfo {
    public int score { get; set; }
    public int highScore { get; set; }

    public int nimamapi ;
    public string[] nihao = new string[3];
    public List<Vector2> test1 = new List<Vector2>();

    public PlayerInfo() {
        score = 1 ;
        highScore = 10 ;

        nimamapi = 100;
        nihao[0] = "nihao1";
        nihao[1] = "nihao2";
        nihao[2] = "nihao3";

        test1.Add(new Vector2(0,0));
        test1.Add(new Vector2(1,1));
        test1.Add(new Vector2(3,4));
    }

    public PlayerInfo PaseJson(string jsonString) {
        return JsonUtility.FromJson<PlayerInfo>(jsonString);
    }

    public string ToJson() {
        return JsonUtility.ToJson(this);
    }

    public void saveToLocal() {
        PlayerPrefs.SetString("PlayerInfo", ToJson());

        Debug.Log("~~~~~~~~~~ saveToLocal " + ToJson());
    }

    public string GetJsonStringFromLocal() {
        if (!PlayerPrefs.HasKey("PlayerInfo")) {
            PlayerPrefs.SetString("PlayerInfo", ToJson());

            string js = ToJson();
            Debug.Log("~~~~~~~~~~ GetJsonStringFromLocal " + ToJson());
        }
        return PlayerPrefs.GetString("PlayerInfo");
    }
}
        m_playerInfo = new PlayerInfo();
        string jsonData = m_playerInfo.GetJsonStringFromLocal();
        Debug.Log("~~~~~~~~~~ jsonData " + jsonData);
        m_playerInfo = m_playerInfo.PaseJson(jsonData);

        Debug.Log("~~~~~~~~~~ " + m_playerInfo);

这里打印出来的存储的json 字符串为
~~~~~~ jsonData {“nimamapi”:100,”nihao”:[“nihao1”,”nihao2”,”nihao3”],”test1”:[{“x”:0.0,”y”:0.0},{“x”:1.0,”y”:1.0},{“x”:3.0,”y”:4.0}]}

注意,这里给jsonUnitlity使用的必须是class , struct 或者monoBehavier 可序列化的类
并且 get set 的成员变量是不支持的, 必须是public 的成员变量

这里写图片描述

### 关于Unity中的强化学习 #### 下载并安装ML-Agents工具包 为了开始使用Unity进行强化学习,需先下载ml-agents工具包[^1]。该过程涉及设置Python环境以及克隆GitHub上的官方仓库。 #### 创建适合强化学习的虚拟环境 Unity提供了一套完整的工具集来构建具有高度自定义物理特性的虚拟世界[^2]。这些特性对于设计复杂的训练场景至关重要,因为它们允许开发者精确控制物体的行为方式及其相互作用规律。通过调整参数如重力、摩擦系数等,可以创造出无限可能的学习情境。 #### 使用预设模板快速上手 对于初学者而言,利用现成的例子作为起点是非常有益的做法。例如,在提供的教程里提到的一个流程实例展示了如何一步步建立起自己的第一个基于ML-Agents的游戏AI。这包括但不限于配置项目结构、编写奖励机制脚本等内容。 #### 解决常见问题与优化建议 当尝试集成第三方库比如elegant-RL时可能会遇到一些挑战。有报告指出,在某些情况下由于训练测试阶段采用了不同版本的仿真器而导致兼容性问题发生[^3]。为了避免此类情况的发生,应当确保在整个开发周期内保持一致性的实验条件,并仔细阅读文档以获取最佳实践指导。 ```python import mlagents.trainers as trainers from mlagents_envs.environment import UnityEnvironment # 初始化Unity环境 env = UnityEnvironment(file_name=None) # 加载默认Brain behavior_name = list(env.behavior_specs)[0] def train(): trainer_config = trainers.TrainerFactory.create_trainer(behavior_name, "PPO") while True: env.step() decision_steps, terminal_steps = env.get_steps(behavior_name) # 训练逻辑... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值