Example #1
0
    public void InstantiateCharacter(IDictionary partitions)
    {
        if (m_MoveSetPrefab != null)
        {
            if (m_CharacterInstance == null)
            {
                m_CharacterInstance      = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject;
                m_CharacterInstance.name = m_MoveSetPrefab.name;
                //
                OnTimerUpInitCharacter(0, partitions);
                //
                EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name);
            }
            else
            {
                EB.Debug.LogPSPoolAsset(string.Format("<color=#00ff00>已经存在这个角色变体<color=#000000>{0}</color>,开启协程重新注册一次身上的所有特效</color>", this.name));
                //需要重新将特效列表~注册进入特效缓存池
                FXLib fxLib = m_CharacterInstance.GetComponent <FXLib>();
                if (fxLib != null)
                {
                    StartCoroutine(fxLib.TryRegisterAll());
                }
                else
                {
                    EB.Debug.LogError("为什么~模型对象身上没有这个FXLib特效组件了?");
                }

                m_CharacterInstance.transform.SetParent(transform.parent);
                m_CharacterInstance.CustomSetActive(true);
                AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();
                if (avatar != null)
                {
                    avatar.SyncLoad = SyncLoad;

                    int partitionCount = m_Partitions.Count;
                    for (int i = 0; i < partitionCount; i++)
                    {
                        if (partitions != null && partitions.Contains(m_Partitions[i].Name))
                        {
                            string assetname = partitions[m_Partitions[i].Name].ToString();
                            avatar.LoadEquipment(m_Partitions[i].Name, assetname);

                            if (IsPlayer)
                            {
                                PartitionObject.PlayerPartitions.Add(assetname);
                            }
                        }
                    }
                }
            }
            InitFX(m_MoveSetPrefab.name);
        }
    }
Example #2
0
    /// <summary>
    /// 初始化特效
    /// </summary>
    /// <param name="pName">预置体的名称</param>
    private void InitFX(string pName)
    {
        if (m_CharacterInstance == null)
        {
            return;
        }

        if (mFxLib == null)
        {
            mFxLib = m_CharacterInstance.GetComponent <FXLib>();
        }

        if (mFxLib == null)
        {
            return;
        }

        if (pName.IndexOf('P') == 0 || pName.IndexOf('M') == 0)
        {
            if (pName.Contains("Campaign"))
            {
                mFxLib.Type = FXLib.FXLibType.Campaign;
            }
            else if (pName.Contains("Lobby"))
            {
                mFxLib.Type = FXLib.FXLibType.Lobby;
            }
            else
            {
                mFxLib.Type = FXLib.FXLibType.Normal;
                string num = pName.Substring(1, pName.Length - 1);
                if (num.Contains("_"))//去除皮肤后缀
                {
                    string[] spl = num.Split('_');
                    num = spl[0];
                }
                mFxLib.BundleName = string.Format("{0}{1}", pName.Substring(0, 1).ToLower(), num.TrimStart('0'));
            }
            //
            EB.Debug.LogObjectMgrAsset(string.Format("通过模型变体组件<color=#00ff00>{0}</color>来设置<color=#ffff00>FxLib特效库</color>需要属性:Type:<color=#00ff00>{1}</color>,特效资源包:<color=#00ff00>{2}</color>"
                                                     , pName, mFxLib.Type, mFxLib.BundleName));
        }
    }