public static void SetValue(object obj) { var objType = obj.GetType(); foreach (var member in ExtractTargetMembers(objType)) { object value; string strValue = SpreadSheetLoader.GetValue(member.attr.Key); if (member.member.MemberType == MemberTypes.Field) { var field = (FieldInfo)member.member; if (!ConvertFuncDict.ContainsKey(field.FieldType)) { continue; } value = ConvertFuncDict[field.FieldType].Invoke(strValue); // 変数の型を正しいものへ変換 field.SetValue(obj, value); continue; } else if (member.member.MemberType == MemberTypes.Property) { var prop = (PropertyInfo)member.member; if (!ConvertFuncDict.ContainsKey(prop.PropertyType)) { continue; } value = ConvertFuncDict[prop.PropertyType].Invoke(strValue); // 変数の型を正しいものへ変換 Debug.Log(prop.PropertyType); prop.SetValue(obj, value, null); continue; } } }
/// <summary> /// 取得を行う /// </summary> IEnumerator GetSheetCoroutine() { yield return(SpreadSheetLoader.LoadCoroutine()); if (!SpreadSheetLoader.IsSuccess) { // 通信に失敗した場合は終了 yield break; } SceneObjectUpdater.UpdateObjectValues(); // シーン内に存在するコンポーネントのメンバ値を更新 SceneManager.activeSceneChanged += (from, to) => { OnChangeScene(); }; }