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;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 取得を行う
        /// </summary>
        IEnumerator GetSheetCoroutine()
        {
            yield return(SpreadSheetLoader.LoadCoroutine());

            if (!SpreadSheetLoader.IsSuccess)
            {
                // 通信に失敗した場合は終了
                yield break;
            }

            SceneObjectUpdater.UpdateObjectValues(); // シーン内に存在するコンポーネントのメンバ値を更新

            SceneManager.activeSceneChanged += (from, to) => { OnChangeScene(); };
        }