protected override void LoadString(string data) { this.ShowWindow = false; string realData = data.Substring("track:".Length); string[] values = realData.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); Spacing = float.Parse(values[0]); CurveType = (PBCircleCurveType)int.Parse(values[1]); Deviation = values.Length >= 4 ? float.Parse(values[3]) : 0; values = values[2].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); PBAnimNode[] blocks = GameObject.FindObjectsOfType <PBAnimNode>(); PBCircle[] circles = new PBCircle[values.Length / 2]; for (int i = 0; i < circles.Length; i++) { PBAnimNode block = blocks.FirstOrDefault(b => string.Equals(b.pbID, values[i * 2])); if (block == null) { Debug.LogError(">>>>>履带:找不到齿轮,pbID: " + values[i * 2]); } if (block.transform.localScale != Vector3.one) { Debug.LogError(">>>>>履带:齿轮gameobject的localscale不为1"); } float radius = float.Parse(values[i * 2 + 1]); #if BLOCK_EDITOR if (!Mathf.Approximately(block.transform.lossyScale.x, 1)) { Debug.LogError(">>>>>搭建积木块不允许有缩放,请从根节点开始检查,并修正!"); } #else //app中在创建搭建前,可能会缩放根节点 radius *= block.transform.lossyScale.x; #endif PBCircle circle = new PBCircle(block.transform, radius); circles[i] = circle; } SetCircles(circles, CurveType); }
public static bool BuildFromInfo(GameObject obj) { PBAnimNode pbNode = obj.GetComponent <PBAnimNode>(); //1. spline if (pbNode.animNodeInfo.VersatileInfo.SplineInfo != null) { Renderer[] renderers = pbNode.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in renderers) { renderer.enabled = true; } PBSpline.CreateFromString(pbNode.gameObject, pbNode.animNodeInfo.VersatileInfo.SplineInfo); return(true); } return(false); }
protected override string SaveString(string format) { StringBuilder sb = new StringBuilder("track:"); //save the circles sb.Append(Spacing.ToString(format) + ";"); sb.Append((int)CurveType + ";"); for (int i = 0; i < Circles.Length; i++) { PBAnimNode pb = Circles[i].transform.GetComponent <PBAnimNode>(); sb.AppendFormat("{0},{1}", pb.pbID, Circles[i].radius); if (i < Circles.Length - 1) { sb.Append(","); } else { sb.Append(";"); } } sb.Append(Deviation.ToString(format) + ";"); return(sb.ToString()); }