private void onAdd(ReorderableList list) { string name = "Property" + (_asTarget.list.Count); var type = UserData.CustomPropertyType.String; var value = new UserData.ValueObject(); int listID = list.count; UserData.PropertyData newData = new UserData.PropertyData(name, type, value, listID); _asTarget.list.Add(newData); list.index = list.count; //焦点移到最后一项 }
private void OnDisable() { for (int i = 0; i < _asTarget.list.Count; i++) { UserData.PropertyData propertyData = _asTarget.list[i]; var type = propertyData.type; if (type == UserData.CustomPropertyType.ListB2Vec2) { propertyData.value.editListB2Vec2Val = false; //取消编辑 } } }
private void OnSceneGUI() { if (!_asTarget.isActiveAndEnabled) { return; } for (int i = 0; i < _asTarget.list.Count; i++) { UserData.PropertyData propertyData = _asTarget.list[i]; var type = propertyData.type; if (type == UserData.CustomPropertyType.ListB2Vec2) { if (propertyData.value.listB2Vec2Val.Count >= 2) { onSceneGUIeditPointsHandler(ref propertyData.value.listB2Vec2Val, propertyData.value.editListB2Vec2Val); } } } }
/**解析UserData*/ private static void parseUserData(UserData prop, XmlElement componentElement, XmlDocument xml) { var list = prop.list; for (int i = 0; i < list.Count; i++) { UserData.PropertyData data = list[i]; XmlElement element = xml.CreateElement("Element"); element.SetAttribute("name", data.name); element.SetAttribute("type", data.type.ToString()); //Debug.LogFormat("{0},{1}",(int)(data.type),prop.gameObject.name); switch (data.type) { case UserData.CustomPropertyType.String: element.SetAttribute("value", data.value.stringVal.ToString()); break; case UserData.CustomPropertyType.Int: element.SetAttribute("value", data.value.intVal.ToString()); break; case UserData.CustomPropertyType.Float: element.SetAttribute("value", data.value.floatVal.ToString()); break; case UserData.CustomPropertyType.Bool: element.SetAttribute("value", data.value.boolVal.ToString()); break; case UserData.CustomPropertyType.B2BodyObject: string bodyValue = "null"; //Debug.Log("data.value.b2BodyObjectVal!=null:"+(data.value.b2BodyObjectVal!=null)); if (data.value.b2BodyObjectVal != null) { //Debug.Log(prop.GetComponent<b2BodyObject>()==data.value.b2BodyObjectVal); bodyValue = data.value.b2BodyObjectVal.GetInstanceID().ToString(); } element.SetAttribute("value", bodyValue); break; case UserData.CustomPropertyType.B2Vec2: element.SetAttribute("x", data.value.b2Vec2Val.x.ToString()); element.SetAttribute("y", data.value.b2Vec2Val.y.ToString()); break; case UserData.CustomPropertyType.ListB2Vec2: for (int j = 0; j < data.value.listB2Vec2Val.Count; j++) { var vec2 = data.value.listB2Vec2Val[j]; XmlElement vec2Element = xml.CreateElement("Vec2"); vec2Element.SetAttribute("x", vec2.x.ToString()); vec2Element.SetAttribute("y", vec2.y.ToString()); element.AppendChild(vec2Element); } break; case UserData.CustomPropertyType.GameObject: string gameObjectValue = "null"; if (data.value.gameObjectVal != null) { gameObjectValue = data.value.gameObjectVal.GetInstanceID().ToString(); } element.SetAttribute("value", gameObjectValue); break; } componentElement.AppendChild(element); } }