public void applyRingModify() { for (int i = objArray.Count - 1; i > -1; i--) { if (objArray[i]) { GameObject.DestroyImmediate(objArray[i].gameObject); } } objArray.Clear(); float step = 2 * Mathf.PI / count; for (int i = 0; i < count; i++) { GameObject obj = (GameObject)GameObject.Instantiate((Object)gameObject); obj.transform.parent = this.transform.parent; obj.transform.localPosition = new Vector3(this.transform.localPosition.x, ringRadius * Mathf.Sin(i * step) + ringCenter.y, ringRadius * Mathf.Cos(i * step) + ringCenter.x); obj.transform.localScale = this.transform.localScale; obj.transform.eulerAngles = transform.eulerAngles; objArray.Add(obj.transform); ModifyProperty temp = obj.GetComponent <ModifyProperty>(); if (temp) { DestroyImmediate(temp); } } }
public void applyArrayModify() { if (count <= 1) { return; } if (objArray == null) { objArray = new List <Transform>(); } for (int i = objArray.Count - 1; i > -1; i--) { if (objArray[i] == null) { objArray.RemoveAt(i); } } if (objArray.Count == 0) { objArray.Add(this.transform); } Vector3 rootPosition = this.transform.localPosition; for (int i = 1; i < objArray.Count; i++) { objArray[i].parent = this.transform.parent; objArray[i].localPosition = rootPosition + new Vector3(relativeOffset.x * i, relativeOffset.y * i, relativeOffset.z * i); objArray[i].localScale = this.transform.localScale; } for (int i = objArray.Count; i < count; i++) { GameObject obj = (GameObject)GameObject.Instantiate((Object)gameObject); obj.transform.parent = this.transform.parent; obj.transform.localPosition = rootPosition + new Vector3(relativeOffset.x * i, relativeOffset.y * i, relativeOffset.z * i); obj.transform.localScale = this.transform.localScale; objArray.Add(obj.transform); ModifyProperty temp = obj.GetComponent <ModifyProperty>(); if (temp) { DestroyImmediate(temp); } } if (objArray.Count > count) { for (int i = objArray.Count - 1; i > count - 1; i--) { GameObject.DestroyImmediate(objArray[i].gameObject); objArray.RemoveAt(i); } } }
public override void OnInspectorGUI() { ModifyProperty modifyproperty = (ModifyProperty)target; modifyproperty.modifyType = (ModifyProperty.ModifyType)EditorGUILayout.EnumPopup("ModifyType", modifyproperty.modifyType); if (modifyproperty.modifyType == ModifyProperty.ModifyType.Array) { modifyproperty.relativeOffset = EditorGUILayout.Vector3Field("Relative Offset", modifyproperty.relativeOffset); modifyproperty.count = EditorGUILayout.IntField("Count", modifyproperty.count); } else { modifyproperty.ringCenter = EditorGUILayout.Vector3Field("Ring Center", modifyproperty.ringCenter); modifyproperty.ringRadius = EditorGUILayout.FloatField("Radius", modifyproperty.ringRadius); modifyproperty.count = EditorGUILayout.IntField("Count", modifyproperty.count); } if (GUILayout.Button("Apply")) { modifyproperty.applyModify(); } }