Exemplo n.º 1
0
    //重铸替换对象
    public void ReplaceObj(string id, GameObject tobj)
    {
        for (int i = 0; i < MovieReplaceInfos.Count; i++)
        {
            MovieReplaceInfo info = MovieReplaceInfos[i];
            if (id == info.ReplaceId)
            {
                GameObject oldobj = info.OldGameObject;
                GameObject obj    = GameObject.Instantiate <GameObject>(tobj);
                obj.name = info.OldGameObject.name;
                obj.transform.SetParent(oldobj.transform.parent);
                info.OldGameObject = obj;
                if (info.isParticleRootNode)
                {
                    for (int j = 0; j < info.ParticleGroups.Length; j++)
                    {
                        int index = info.ParticleGroups[j];
                        MovieReplaceInfos[index].ParticleRootNode = obj.transform;
                    }
                }

                obj.transform.localPosition = info.LocalPosition;
                obj.transform.localRotation = info.LocalRotation;
                obj.transform.localScale    = info.LocalScale;
                obj.SetActive(info.SelfActive);
                obj.layer = info.Layer;

                Transform[] alltranforms = obj.GetComponentsInChildren <Transform>();
                foreach (Transform t in alltranforms)
                {
                    t.gameObject.layer = LayerMask.NameToLayer("Sequence");
                }


                for (int j = 0; j < info.TrackGroups.Length; j++)
                {
                    info.TrackGroups[j].Actor = obj.transform;
                }

                for (int j = 0; j < info.TiedObjs.Length; j++)
                {
                    int index = info.TiedObjs[j].index;
                    info.TiedObjs[j].item.SetTieGameObject(obj, index);
                }

                GameObject.DestroyImmediate(oldobj);
                GameObject.DestroyImmediate(tobj);
            }
        }
    }
Exemplo n.º 2
0
 //设置粒子位置
 public void ReTieParticles()
 {
     for (int i = 0; i < MovieReplaceInfos.Count; i++)
     {
         MovieReplaceInfo info = MovieReplaceInfos[i];
         if (info.isParticle)
         {
             if (info.ParticleRootNode != null)
             {
                 if (info.particleRelativePath != "")
                 {
                     Transform node = info.ParticleRootNode.Find(info.particleRelativePath);
                     if (node == null)
                     {
                         Debug.LogWarningFormat("EffectSetting root path of {0} not found", info.particleRelativePath);
                     }
                     else
                     {
                         var old = info.OldGameObject.transform;
                         info.OldGameObject.transform.SetParent(node);
                         old.localScale    = Vector3.one;
                         old.localPosition = info.particleOffset;
                         old.localRotation = Quaternion.Euler(info.particleRotation);
                     }
                 }
                 else
                 {
                     var old = info.OldGameObject.transform;
                     info.OldGameObject.transform.SetParent(info.ParticleRootNode);
                     old.localScale    = Vector3.one;
                     old.localPosition = info.particleOffset;
                     old.localRotation = Quaternion.Euler(info.particleRotation);
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 排序规则方便运行时替换物体
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 private int MovieReplaceInfosSort(MovieReplaceInfo a, MovieReplaceInfo b)
 {
     return(a.CurrObjLevel >= b.CurrObjLevel ? 1 : -1);
 }