internal void Set(Type type, string name)
        {
            if (_ints.IsTarget(type))
            {
                _ints.Add(name);
            }
            else if (_floats.IsTarget(type))
            {
                _floats.Add(name);
            }
            else if (_strings.IsTarget(type))
            {
                _strings.Add(name, "");
            }
            else if (_bools.IsTarget(type))
            {
                _bools.Add(name);
            }
            else if (_enums.IsTarget(type))
            {
                _enums.Add(type);
            }
            else if (_vector2s.IsTarget(type))
            {
                _vector2s.Add(name);
            }
            else if (_vector3s.IsTarget(type))
            {
                _vector3s.Add(name);
            }
            else if (_vector2Ints.IsTarget(type))
            {
                _vector2Ints.Add(name);
            }
            else if (_vector3Ints.IsTarget(type))
            {
                _vector3Ints.Add(name);
            }
            else if (_colors.IsTarget(type))
            {
                _colors.Add(name);
            }
            else if (_arrayes.IsTarget(type))
            {
                _arrayes.Add(name, type);
            }

            // 上記でヒットしなかった
            else if (IsClassOrStruct(type))
            {
                var v = new Value(name);
                // フィールドから要素を構築
                foreach (var field in type.GetFields(Flags))
                {
                    v.Set(field.FieldType, field.Name);
                }

                _values.Add(name, v);
            }
            else
            {
                Debug.LogError("Invalid Type: " + type.Name);
            }
        }