You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Team对象实例的加载功能实现求助(已完成保存)

Unity存档加载解决方案

核心思路

加载时需先清理场景内默认的预制体团队实例,再读取存档文件反序列化为Team数据列表,最后逐个实例化预制体并将保存的属性值赋值给新实例。

具体实现步骤

  • 读取并反序列化存档数据
    通过StreamReader读取存档文件,再用JsonConvert.DeserializeObject将JSON字符串转换为List<Team>数据集合:

    public List<Team> LoadTeamData()
    {
        string savePath = Path.Combine(Application.persistentDataPath, "save.json");
        if (!File.Exists(savePath)) return new List<Team>();
        
        StreamReader sr = new StreamReader(savePath);
        string json = sr.ReadToEnd();
        sr.Close();
        
        return JsonConvert.DeserializeObject<List<Team>>(json, new JsonSerializerSettings
        {
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
        });
    }
    
  • 清理现有团队实例
    给所有Team实例添加统一标签(比如TeamInstance),加载前批量查找并销毁,避免重复显示:

    private void ClearExistingTeams()
    {
        GameObject[] existingTeams = GameObject.FindGameObjectsWithTag("TeamInstance");
        foreach (var teamObj in existingTeams)
        {
            Destroy(teamObj);
        }
    }
    
  • 实例化预制体并赋值属性
    遍历反序列化得到的Team数据,实例化预制体后将保存的属性值逐一赋值给新实例:

    public void LoadTeams(GameObject teamPrefab)
    {
        ClearExistingTeams();
        List<Team> savedTeams = LoadTeamData();
        
        foreach (var savedTeam in savedTeams)
        {
            GameObject newTeamObj = Instantiate(teamPrefab);
            newTeamObj.tag = "TeamInstance";
            Team newTeam = newTeamObj.GetComponent<Team>();
            
            // 赋值需恢复的属性
            newTeam.health = savedTeam.health;
            newTeam.mana = savedTeam.mana;
            newTeam.exp = savedTeam.exp;
            // 其他自定义属性同理赋值
        }
    }
    

关键注意点

  • 确保Team类中需要序列化的字段为public或添加[SerializeField]标签,否则JSON序列化/反序列化会忽略这些字段。
  • 替换硬编码的存档路径为Application.persistentDataPath,适配不同平台的文件系统规则。
  • 若Team类包含引用类型成员,需保持序列化时的ReferenceLoopHandling.Ignore配置,避免反序列化出错。

内容的提问来源于stack exchange,提问作者Nowko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:04