private void whenImport() { int row = 1, col = 1; int length = GetInt(row++, col); paramlist.Clear(); for (int i = 0; i < length; i++) { FixClassCircle.ParamMore paramData = new FixClassCircle.ParamMore(); paramData.desc = GetString(row, col++); int leng = GetInt(row, col++); for (int j = 0; j < leng; j++) { FixClassCircle.UseParam useParam = new FixClassCircle.UseParam(); useParam.NameCh = GetString(row, col++); useParam.NameEng = GetString(row, col++); useParam.type = (FixClassCircle.ParamType)GetInt(row, col++); useParam.EnumDesc = GetString(row, col++); paramData.Detail.Add(useParam); } paramlist.Add(paramData); row++; col = 1; } length = GetInt(row++, col); serializedNodes.Clear(); for (int i = 0; i < length; i++) { FixClassCircle.SerializableNode seriNode = new FixClassCircle.SerializableNode(); seriNode.tagCh = GetString(row, col++); seriNode.tag = GetString(row, col++); seriNode.paramIndex = GetInt(row, col++); int leng = GetInt(row, col++); for (int j = 0; j < leng; j++) { seriNode.otherParamValues.Add(GetString(row, col++)); } seriNode.childCount = GetInt(row, col++); seriNode.indexOfFirstChild = GetInt(row, col++); serializedNodes.Add(seriNode); row++; col = 1; } OnAfterDeserialize(); }
public void OnBeforeSerialize() { if (CanNot_OnBeforeSerialize) { return; } if (CanNot_OnBeforeSerialize_2) { return; } CanNot_OnBeforeSerialize_2 = true; //unity is about to read the serializedNodes field's contents. lets make sure //we write out the correct data into that field "just in time". serializedNodes.Clear(); FixClassCircle.SerializableNode seriRoot = formSeriNode(root); serializedNodes.Add(seriRoot); letChildBeSerilize(root, seriRoot); }
private void letChildBeSerilize(Node fatherNode, FixClassCircle.SerializableNode fatherSerialNode) { List <FixClassCircle.SerializableNode> seriListTmp = new List <FixClassCircle.SerializableNode>(); for (int i = 0; i < fatherNode.children.Count; i++) { if (i == 0 && fatherSerialNode != null) { fatherSerialNode.indexOfFirstChild = serializedNodes.Count; } FixClassCircle.SerializableNode seriTmp = formSeriNode(fatherNode.children[i]); serializedNodes.Add(seriTmp); seriListTmp.Add(seriTmp); } for (int i = 0; fatherNode.children != null && i < fatherNode.children.Count && i < seriListTmp.Count; i++) { letChildBeSerilize(fatherNode.children[i], seriListTmp[i]); } }
private FixClassCircle.SerializableNode formSeriNode(Node n) { //In case of array out of range for (int i = paramlist.Count - 1; i < n.paramIndex; i++) { paramlist.Add(new FixClassCircle.ParamMore()); } var serializedNode = new FixClassCircle.SerializableNode() { tag = n.tag, tagCh = n.tagCh, childCount = n.children.Count, paramIndex = n.paramIndex }; n.ResizeParams(); foreach (string str in n.otherParamValues) { serializedNode.otherParamValues.Add(str); } return(serializedNode); }