Esempio n. 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);
        }
    }
Esempio n. 2
0
        /// <summary>
        /// Muniuma_Model   Muniuma+"_Model_"    Muniuma 取自Muniuma-Variant
        /// </summary>
        /// <param name="equipmentType"></param>
        /// <param name="inventoryDataID"></param>
        protected void UpdateEquipment(string equipmentType, string ecomomy_id)
        {
            string equipmentAssetName;

            //卸下逻辑
            if (string.IsNullOrEmpty(ecomomy_id))
            {
                equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
            }
            else
            {               //穿上逻辑
                if (string.IsNullOrEmpty(ecomomy_id))
                {
                    equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                }
                else
                {
                    string raceModel = PlayerEquipmentDataLookup.GetModeAtributeName(userid.ToString());
                    if (string.IsNullOrEmpty(raceModel))
                    {
                        equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                    }
                    else
                    {
                        //string equipmentName = EconemyTemplateManager.GetPartitionName(raceModel, ecomomy_id); TODOX
                        string equipmentName = string.Empty;
                        if (string.IsNullOrEmpty(equipmentName))
                        {
                            equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType);
                        }
                        else
                        {
                            equipmentAssetName = equipmentName;
                        }
                    }
                }
            }

            //bool foundAsset = false;

            string nexteqpname = ecomomy_id;
            string preeqpname  = null;

            if (preEquipmentDic.ContainsKey(equipmentType))
            {
                preeqpname = preEquipmentDic[equipmentType];
            }
            OnEquipmentChanged(equipmentType, preeqpname, nexteqpname);

            AvatarComponent avatar = mDL.transform.GetComponent <AvatarComponent>();

            if (avatar != null)
            {
                avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/);
            }

            long uid = 0;

            DataLookupsCache.Instance.SearchDataByID <long>("user.uid", out uid);           //LoginManager.Instance.LocalUserId.Value
            if (userid == uid && !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice)
            {
                GameEngine.Instance.SetHideColorTarget(mDL.gameObject);
            }
        }
Esempio n. 3
0
    /// <summary>
    /// 实例化角色.将根据身上记录的部件数据组装
    /// </summary>
    public void InstantiateCharacter()
    {
        if (m_MoveSetPrefab != null)
        {
            if (m_CharacterInstance == null)
            {
                //
                EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name);

                m_CharacterInstance      = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject;
                m_CharacterInstance.name = m_MoveSetPrefab.name;
                AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>();
                if (avatar == null)
                {
                    avatar = m_CharacterInstance.AddComponent <AvatarComponent>();
                    int partitionCount = m_Partitions.Count;
                    for (int i = 0; i < partitionCount; i++)
                    {
                        avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName);

                        if (IsPlayer)
                        {
                            PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName);
                        }
                    }
                }
                avatar.PreviewTransformName  = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform;
                avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform;
                avatar.SyncLoad = SyncLoad;
                avatar.InitAvatar();
                m_CharacterInstance.transform.SetParent(transform.parent);
            }
            else
            {
                //
                EB.Debug.LogObjectMgrAsset("<color=#00ffff>已经_克隆过这个预置体</color>:<color=#00ff00>{0}</color>,将其设置可见", m_MoveSetPrefab.name);

                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++)
                    {
                        avatar.LoadEquipment(m_Partitions[i].Name, m_Partitions[i].AssetName);

                        if (IsPlayer)
                        {
                            PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName);
                        }
                    }
                }
            }

            InitFX(m_MoveSetPrefab.name);
        }
        else
        {
            EB.Debug.LogError("[" + Time.frameCount + "]为什么角色变体没有相应的预置体呢?");
        }

        //TimerManager.instance.AddLateUpdateTimer(70, 1, OnTimerUp);
    }
Esempio n. 4
0
    /*
     * protected void UpdateEquipmentColor(string equipmentType, int equipmentColorIndex)
     * {
     *      CombinedMesh avatar = GetComponent<CombinedMesh>();
     *      if(avatar != null)
     *      {
     *              avatar.UpdateEquipmentColor(equipmentType, equipmentColorIndex);
     *      }
     * }
     */

    protected void UpdateEquipment(string equipmentType, string inventoryDataID)
    {
        string equipmentAssetName = !string.IsNullOrEmpty(inventoryDataID)
                        ? GetLookupData <string>(inventoryDataID + ".economy_id") + "-prefab"
                                : "MaleWarrior_Default" + equipmentType;

        //bool foundAsset = false;

        string nexteqpname = inventoryDataID;
        string preeqpname  = null;

        if (preEquipmentDic.ContainsKey(equipmentType))
        {
            preeqpname = preEquipmentDic[equipmentType];
        }
        OnEquipmentChanged(equipmentType, preeqpname, nexteqpname);

        AvatarComponent avatar = GetComponent <AvatarComponent>();

        if (avatar != null)
        {
            avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/);
        }

        /*
         * Combatant c = GetComponent<Combatant>();
         * if (c != null) {
         *      if (c.Equipment != null) {
         *              for(int i = 0; i < c.Equipment.Length; i++)
         *              {
         *                      if(c.Equipment[i].name == equipmentAssetName)
         *                      {
         *                              foundAsset = true;
         *
         *                              c.Equipment[i].SetActive(true);
         *
         *                              CombinedMesh avatar = GetComponent<CombinedMesh>();
         *
         *                              avatar.SetToCombineGameObjectByRowName(equipmentType, c.Equipment[i], equipmentDataID);
         *                              OnEquipmentChanged(equipmentType,preeqpname,nexteqpname);
         *
         *                              c.Equipment[i].SetActive(false);
         *                      }
         *              }
         *      }
         * }
         * System.Action<string, GameObject, bool> onAssetLoaded = delegate(string arg1, GameObject arg2, bool arg3) {
         *      if(!arg3)
         *      {
         *              EB.Debug.LogError("Failed to load assset: " + arg1);
         *              return;
         *      }
         *      CombinedMesh avatar = GetComponent<CombinedMesh>();
         *      avatar.SetToCombineGameObjectByRowName(equipmentType, arg2, equipmentDataID);
         *      OnEquipmentChanged(equipmentType,preeqpname,nexteqpname);
         *      Destroy(arg2);
         *      Resources.UnloadUnusedAssets(); // slow
         * };
         *
         * if (!foundAsset) {
         *      GM.AssetManager.GetAsset<GameObject> (equipmentAssetName, onAssetLoaded, GameEngine.Instance.gameObject);
         * }
         */
    }