// 收集子结点 void CollectChild(GameObject obj) { //隐藏的就不需要加了 if (!obj.activeInHierarchy) { return; } SkinnedMeshRenderer sk = obj.GetComponent <SkinnedMeshRenderer>(); if (sk == null) { childLayers.Add(new Data(obj.layer, obj)); } else { SyncSkinned.Begin(sk, this); } Transform tran = obj.transform; for (int i = 0; i < tran.childCount; ++i) { CollectChild(tran.GetChild(i).gameObject); } }
public static SyncSkinned Begin(SkinnedMeshRenderer smr, OutlineGlowRenderer parent) { SyncSkinned child = smr.GetComponentInChildren(typeof(SyncSkinned)) as SyncSkinned; if (child == null) { GameObject cgo = new GameObject("copy_smr"); cgo.SetActive(false); child = cgo.AddComponent <SyncSkinned>(); Transform childtran = cgo.transform; childtran.parent = smr.transform; childtran.localPosition = Vector3.zero; childtran.localRotation = Quaternion.identity; childtran.localScale = Vector3.one; child.parent = parent; cgo.SetActive(true); } child.smr = smr; return(child); }