Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2150.00元
关于UGUI中Json信息解析后,报名字为List的Json为空
cq9090960发起了问答2018-12-15
4
回复
878
浏览
  class UIPanelTypeJson
    {
        public List<UIPanelInfo> List;
    }


    void UIPAnalysis()//构造一个UIPanel的解析方法
    {

        panelTypepath = new Dictionary<UIPanelType, string>();
       TextAsset ta=Resources.Load<TextAsset>("UIPanelTyep");
       UIPanelTypeJson gameObjectInfo= JsonUtility.FromJson<UIPanelTypeJson>(ta.text);//运行程序报这个为永远为空
        foreach (UIPanelInfo info in gameObjectInfo.List)
        {
            panelTypepath.Add(info.panelTyep, info.path);
        }

    }

运行前Unity警告内部类UIPanelTyepJson中定义的List为空

运行后报JsonUtility.FromJson解析方法得到的为空

UIPanelInfo代码如下:

 [NonSerialized]
    public UIPanelType panelTyep;//枚举类型
    public string panelstring;
    public string path;//字符串类型

    public void OnAfterDeserialize()
    {
        Debug.Log(panelstring);
        UIPanelType type = (UIPanelType)System.Enum.Parse(typeof(UIPanelType), panelstring);
        panelTyep = type;
    }

    public void OnBeforeSerialize()
    {
        throw new NotImplementedException();
    }

Json代码

{
  "List": [
    {
      "panelstring": "Bag",
      "path": "UIPanel/BagPanel"
    },

    {
      "panelstring": "System",
      "path": "UIPanel/SystemPanel"
    },
    {
      "panelstring": "Shop",
      "path": "UIPanel/ShopPanel"
    },
    {
      "panelstring": "Sikll",
      "path": "UIPanel/SikllPanel"
    },
    {
      "panelstring": "Task",
      "path": "UIPanel/TaskPanel"
    },
    {
      "panelstring": "MainMeun",
      "path": "UIPanel/MainMeunPanel"
    }



  ]
}

 

所有回复
  • 老师_Trigger 2018-12-15

    同学你好,UIPanelTyepJson这个类里的那个列表只有声明,是不是没有实例化。

    • cq9090960 2018-12-16

      老师 你不是课程里说UIPanelTyepJson这个内部类,是用来将列表包装成对象,因为Json只能解析对象。现在运行起来报错信息如下:
      NullReferenceException: Object reference not set to an instance of an object
      UIPanelmanager.UIPAnalysis () (at Assets/UIFramework/UIPanelmanager.cs:46)

      第46行代码就是 UIPanelTypeJson gameObjectInfo= JsonUtility.FromJson<UIPanelTypeJson>(ta.text);

      (0) 回复
    • 老师_Trigger 2018-12-16

      回复 @ cq9090960: 同学可以继续往后学习,后续老师代码还有变动,还有,这个课程是siki老师的,不是老师的哦

      (0) 回复
    • zhm627031374 2020-02-12

      回复 @ cq9090960: 麻烦问一下解决了吗

      (0) 回复
    还有-2条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!