// 收集子结点
    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);
        }
    }
Beispiel #2
0
    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);
    }