Example #1
0
 void Record()
 {
     foreach (var value in values)
     {
         if (value.type != XMonoVariableType.GameObject &&
             value.type != XMonoVariableType.Component)
         {
             continue;
         }
         if (gameObject == value.gameobject)
         {
             value.isself   = true;
             value.recorded = true;
             Debug.Log($"{value.name} = 自己");
             continue;
         }
         var relativePath = XMonoVariableUtility.GetChildPath(transform, value.gameobject.transform);
         if (string.IsNullOrEmpty(relativePath))
         {
             Debug.LogError($"{value.name} 引用了不是自己Child的节点!!!!!!!");
             value.recorded = false;
             continue;
         }
         value.relativePath = relativePath;
         value.recorded     = true;
         Debug.Log($"{value.name} = {value.relativePath}");
     }
 }
Example #2
0
        public object GetValue()
        {
            switch (type)
            {
            case XMonoVariableType.Bool:
                return(XMonoVariableUtility.ToBool(valData));

            case XMonoVariableType.Float:
                return(XMonoVariableUtility.ToSingle(valData));

            case XMonoVariableType.Int:
                return(XMonoVariableUtility.ToInt32(valData));

            case XMonoVariableType.String:
                return(valData);

            case XMonoVariableType.Color:
                return(XMonoVariableUtility.ToColor(valData));

            case XMonoVariableType.Vector2:
                return(XMonoVariableUtility.ToVector2(valData));

            case XMonoVariableType.Vector3:
                return(XMonoVariableUtility.ToVector3(valData));

            case XMonoVariableType.Vector4:
                return(XMonoVariableUtility.ToVector4(valData));

            case XMonoVariableType.GameObject:
                return(objData);

            case XMonoVariableType.Component:
                return(objData);

            default:
                throw new System.NotSupportedException();
            }
        }
Example #3
0
        private void _SyncValData(XMonoVariable target)
        {
            switch (target.type)
            {
            case XMonoVariableType.Bool:
                target.valData = XMonoVariableUtility.ToString(target.cacheBool);
                break;

            case XMonoVariableType.Int:
                target.valData = XMonoVariableUtility.ToString(target.cacheInt);
                break;

            case XMonoVariableType.Float:
                target.valData = XMonoVariableUtility.ToString(target.cacheFloat);
                break;

            case XMonoVariableType.Color:
                target.valData = XMonoVariableUtility.ToString(target.cacheColor);
                break;

            case XMonoVariableType.String:
                target.valData = target.cacheString;
                break;

            case XMonoVariableType.Vector2:
                target.valData = XMonoVariableUtility.ToString(target.cacheVec2);
                break;

            case XMonoVariableType.Vector3:
                target.valData = XMonoVariableUtility.ToString(target.cacheVec3);
                break;

            case XMonoVariableType.Vector4:
                target.valData = XMonoVariableUtility.ToString(target.cacheVec4);
                break;
            }
        }
        static bool _Inject <T>(T obj, FieldInfo fieldInfo, XMonoVariable value)
        {
            switch (value.type)
            {
            case XMonoVariableType.GameObject:
            case XMonoVariableType.Component:
                var objType = value.objData.GetType();
                if (fieldInfo.FieldType == objType || objType.IsSubclassOf(fieldInfo.FieldType))
                {
                    fieldInfo.SetValue(obj, value.objData);
                    return(true);
                }

                break;

            case XMonoVariableType.Bool:
                if (fieldInfo.FieldType == typeof(bool))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToBool(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.Float:
                if (fieldInfo.FieldType == typeof(float))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToSingle(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.Int:
                if (fieldInfo.FieldType == typeof(int))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToInt32(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.String:
                if (fieldInfo.FieldType == typeof(string))
                {
                    fieldInfo.SetValue(obj, value.valData);
                    return(true);
                }

                break;

            case XMonoVariableType.Color:
                if (fieldInfo.FieldType == typeof(Color))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToColor(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.Vector2:
                if (fieldInfo.FieldType == typeof(Vector2))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToVector2(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.Vector3:
                if (fieldInfo.FieldType == typeof(Vector3))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToVector3(value.valData));
                    return(true);
                }

                break;

            case XMonoVariableType.Vector4:
                if (fieldInfo.FieldType == typeof(Vector4))
                {
                    fieldInfo.SetValue(obj, XMonoVariableUtility.ToVector4(value.valData));
                    return(true);
                }

                break;
            }

            return(false);
        }