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}"); } }
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(); } }
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); }