/// <summary>
        /// 遍历指定物体节点下的所有UIProgramData,然后根据字段名反射赋值
        /// </summary>
        /// <param name="rootObj">物体根节点</param>
        /// <param name="uiData">UIData对象</param>
        public static void ForEachDataByAttribute(GameObject rootObj, object uiData)
        {
            dataList.Clear();
            if (rootObj == null || uiData == null)
            {
                return;
            }

            UIProgramData[] allData = rootObj.GetComponentsInChildren <UIProgramData>(true);
            if (null == allData || allData.Length == 0)
            {
                return;
            }

            for (int iLoop = 0; iLoop < allData.Length; iLoop++)
            {
                UIProgramData programData = allData[iLoop];
                if (null != programData.ExportData && programData.ExportData.Length > 0)
                {
                    for (int iIndex = 0; iIndex < programData.ExportData.Length; iIndex++)
                    {
                        UIExportData exportData = programData.ExportData[iIndex];
                        dataList.Add(exportData);
                    }
                }
            }

            System.Reflection.FieldInfo[] fieldInfoArr = uiData.GetType().GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);
            foreach (var field in fieldInfoArr)
            {
                object[] objAtts = field.GetCustomAttributes(typeof(UIDataAttribute), false);
                if (objAtts != null && objAtts.Length > 0)
                {
                    for (int j = 0, jMax = objAtts.Length; j < jMax; j++)
                    {
                        if (objAtts[j] == null)
                        {
                            continue;
                        }
                        UIDataAttribute dataAtt = objAtts[j] as UIDataAttribute;

                        SetFieldValue(uiData, field, dataAtt);
                    }
                }
            }
        }
        private static void SetFieldValue(object uiData, System.Reflection.FieldInfo field, UIDataAttribute dataAtt)
        {
            for (int x = 0, xMax = dataList.Count; x < xMax; x++)
            {
                UIExportData exportData = dataList[x];
                if (exportData != null && exportData.VariableName.Equals(dataAtt.FieldName))
                {
                    if (exportData.isArrayData)
                    {
                        System.Array dataArr = null;
                        if (exportData.isGameObjectRef)
                        {
                            dataArr = System.Array.CreateInstance(typeof(GameObject), exportData.CompReferenceArray.Length);
                        }
                        else
                        {
                            dataArr = System.Array.CreateInstance(exportData.CompReferenceArray[0].GetType(), exportData.CompReferenceArray.Length);
                        }

                        for (int y = 0; y < exportData.CompReferenceArray.Length; y++)
                        {
                            if (exportData.isGameObjectRef)
                            {
                                dataArr.SetValue(exportData.CompReferenceArray[y].gameObject, y);
                            }
                            else
                            {
                                dataArr.SetValue(exportData.CompReferenceArray[y], y);
                            }
                        }
                        field.SetValue(uiData, dataArr);
                    }
                    else
                    {
                        if (exportData.isGameObjectRef)
                        {
                            field.SetValue(uiData, exportData.CompReference.gameObject);
                        }
                        else
                        {
                            field.SetValue(uiData, exportData.CompReference);
                        }
                    }
                    dataList[x] = null;
                    break;
                }
            }
        }