当前位置:   article > 正文

unity中ScriptableObject的保存技巧_unity scriptableobject 代码修改后保存

unity scriptableobject 代码修改后保存

        so(ScriptableObject 这里是简称,后面都用so代替ScriptableObject)在处理大量数据,属实不怎么样,本人深有体会,在项目中一开始定的是用so存储数据,到后期数据量变大了,so的维护就变的特别麻烦,因为so用代码赋值后会暂时保存,在unity的属性面板上可以看到我们修改后的内容,但是当我们重启unity后会发现so中的数据又恢复到原来的数据了,也就是说没有保存在本地,面对这种办法,我们可以用json读取后存到so中,话不多说,开始贴代码

  1. [CreateAssetMenu(fileName = "Options", menuName = "创建题目so")]
  2. public class data : ScriptableObject
  3. {
  4. [NonReorderable]
  5. public List<QuestionBank> questionBanks;
  6. List<dates> dates;
  7. [ContextMenu("运行")]
  8. private async Task aw()
  9. {
  10. Debug.Log("测试有没有值:" + questionBanks[0].TitleStr);
  11. string path = Application.streamingAssetsPath + "/题库.json";
  12. Debug.Log(path);
  13. var uri = new System.Uri(Path.Combine(path));
  14. string url = uri.ToString();
  15. UnityWebRequest www = UnityWebRequest.Get(uri);
  16. await www.SendWebRequest();
  17. try
  18. {
  19. if (www.isNetworkError || www.isHttpError)
  20. {
  21. Debug.LogError(www.error);
  22. }
  23. else
  24. {
  25. Debug.Log(www.downloadHandler.text);
  26. string jsonStr = www.downloadHandler.text;
  27. Debug.Log(jsonStr);
  28. List<dates> da = JsonConvert.DeserializeObject<List<dates>>(jsonStr);
  29. Debug.Log(da[0].id);
  30. dates = da;
  31. }
  32. }
  33. catch (System.Exception ex)
  34. {
  35. Debug.LogError($"有报错!{ex.Message}");
  36. throw;
  37. }
  38. for (int i = 0; i < dates.Count; i++)
  39. {
  40. questionBanks[i].TitleStr = dates[i].topic;
  41. questionBanks[i].id = int.Parse(dates[i].id);
  42. questionBanks[i].OptionStr1 = dates[i].optionA;
  43. questionBanks[i].OptionStr2 = dates[i].optionB;
  44. questionBanks[i].OptionStr3 = dates[i].optionC;
  45. questionBanks[i].OptionStr4 = dates[i].optionD;
  46. questionBanks[i].CorrectOptions = dates[i].correctoption;
  47. }
  48. }
  49. }

我们是在创建so的类里写方法,读取json存入so,存入后要按ctrl+s保存才有效,写完这个后回到unity的属性面板,找到创建好的so,在空白处单击右键

 然后点击运行,就可以执行读取json并赋值给so的操作了,用这种方法保存的在重启后数据也还在,也就是说是写入asset了(小声bb,json赋值so的操作本人跟主程交流了一番,主程给的这个方法,特好用,主程万岁!!!)

如果不知道so怎么创建的,可以去看我之前写的文章

so的创建https://blog.csdn.net/k253316/article/details/128233834?spm=1001.2014.3001.5502

 表格转json或其他类型icon-default.png?t=N2N8https://tableconvert.com/zh-cn/excel-to-json

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/112451
推荐阅读
相关标签
  

闽ICP备14008679号