//根据NetRoleEquipmentData创建RoleEquipmentData
        public static RoleEquipmentData NetDataToRoleEquipmentData(NetRoleEquipmentData data)
        {
            RoleEquipmentData roleData = new RoleEquipmentData();

            roleData.RolePlastomerId    = data.plastomer_id.ToString();
            roleData.RoleEquipmentItems = new List <RoleEquipmentItem> ();
            for (int i = 0; i < data.equip_list.Length; i++)
            {
                roleData.RoleEquipmentItems.Add(CreateRoleEquipmentItemById(data.equip_list[i].item_id.ToString()));
            }
            return(roleData);
        }
        //根据RoleEquipmentData创建NetRoleEquipmentData
        public static NetRoleEquipmentData RoleEquipmentDataToNetData(RoleEquipmentData data)
        {
            NetRoleEquipmentData netData = new NetRoleEquipmentData();

            netData.plastomer_id = int.Parse(data.RolePlastomerId);
            netData.equip_list   = new NetEquipmentItem[data.RoleEquipmentItems.Count];
            for (int i = 0; i < data.RoleEquipmentItems.Count; i++)
            {
                netData.equip_list[i]           = new NetEquipmentItem();
                netData.equip_list[i].item_id   = int.Parse((((int)data.RoleEquipmentItems[i].EquipmentType) / 10).ToString() + data.RoleEquipmentItems[i].EquipmentId);
                netData.equip_list[i].item_type = ((int)data.RoleEquipmentItems[i].EquipmentType);
            }
            return(netData);
        }
示例#3
0
 /// <summary>
 /// 保存角色的服装数据到服务器和本地
 /// </summary>
 /// <returns><c>true</c>, if role equipment to server and local was saved, <c>false</c> otherwise.</returns>
 /// <param name="equipmentData">Equipment data.</param>
 public bool SaveRoleEquipmentToServerAndLocal(RoleEquipmentData equipmentData, RoleEquipmentItem item)
 {
     //item更新到equipmentData里面。
     for (int i = 0; i < equipmentData.RoleEquipmentItems.Count; i++)
     {
         if (item.EquipmentType.Equals(equipmentData.RoleEquipmentItems[i].EquipmentType))
         {
             equipmentData.RoleEquipmentItems[i] = item;
             break;
         }
     }
     //新的equipmentData持久化存储。
     //TODO
     return(true);
 }
 /// <summary>
 /// 初始化角色的插槽和附件信息
 /// </summary>
 /// <param name="successfulCallBack">Successful call back.</param>
 /// <param name="failCallBack">Fail call back.</param>
 public void SpineInitRoleSlotAttachment(RoleAnaimationData animationData, SkeletonAnimation skeletonAnim, RoleEquipmentData tempData, CombineTextureData combineTextureData, Dictionary <int, List <string> > TempSlotAttachmentDic, List <Texture2D> destoryTextureList, Action <bool> setRoleStatus, bool isTP, bool isHide, Action <string> failCallBack = null)
 {
     if (null != setRoleStatus && isHide)
     {
         setRoleStatus.Invoke(false);
     }
     if (null != combineTextureData.initRoleCoroutine)
     {
         GameManager.Instance.StopCoroutine(combineTextureData.initRoleCoroutine);
     }
     combineTextureData.initRoleCoroutine = GameManager.Instance.StartCoroutine(spineChangeCoreLogic.InitRoleEquipment(animationData, skeletonAnim, tempData, combineTextureData, TempSlotAttachmentDic, destoryTextureList, setRoleStatus, failCallBack, isTP));
 }
 /// <summary>
 /// 角色换装
 /// </summary>
 /// <param name="slotStr">Slot string.</param>
 /// <param name="texture2D">Texture2 d.</param>
 /// <param name="successfulCallBack">Successful call back.</param>
 /// <param name="failCallBack">Fail call back.</param>
 public void SpineRoleChange(RoleAnaimationData animationData, SkeletonAnimation skeletonAnim, CombineTextureData combineTextureData, Dictionary <int, List <string> > slotAttachmentDic, RoleEquipmentData equipmentData, RoleEquipmentItem equipmentItem, bool isTexturePackaged, List <Texture2D> destoryTextureList, Action <bool> setRoleStatus, Action <string> failCallBack = null)
 {
     if (null != setRoleStatus)
     {
         setRoleStatus.Invoke(false);
     }
     System.DateTime time1 = System.DateTime.Now;
     SpineChangeDataLogic.Instance.GetRoleEquipmentObject(equipmentItem, (UnityEngine.Object o) => {
         //SpineChangeDataLogic.Instance.SaveRoleEquipmentToServerAndLocal (equipmentData, equipmentItem);
         if (null != combineTextureData.changeRoleCoroutine)
         {
             GameManager.Instance.StopCoroutine(combineTextureData.changeRoleCoroutine);
         }
         combineTextureData.changeRoleCoroutine = GameManager.Instance.StartCoroutine(spineChangeCoreLogic.Change(animationData, skeletonAnim, combineTextureData, slotAttachmentDic, o as EquipmentObject, isTexturePackaged, destoryTextureList, setRoleStatus, failCallBack));
         System.DateTime time2 = System.DateTime.Now;
         if (null != GameObject.FindObjectOfType <ChangeTest> ())
         {
             GameObject.FindObjectOfType <ChangeTest> ().text.text += "加载AB用时:" + (time2 - time1).TotalMilliseconds + "\n";
         }
     });
 }
 /// <summary>
 /// 创建角色
 /// </summary>
 /// <param name="skeletonJson">Skeleton json.</param>
 /// <param name="atlasText">Atlas text.</param>
 /// <param name="textures">Textures.</param>
 /// <param name="material">Material.</param>
 /// <param name="initialize">If set to <c>true</c> initialize.</param>
 /// <param name="skinName">Skin name.</param>
 /// <param name="animationName">Animation name.</param>
 /// <param name="loop">If set to <c>true</c> loop.</param>
 /// <param name="pos">Position.</param>
 /// <param name="successfulCallBack">Successful call back.</param>
 /// <param name="failCallBack">Fail call back.</param>
 public void SpineCreateRole(SpineAvatarType avatarType, RoleEquipmentItem equipmentItem, Material material, bool initialize, string name, string skinName, string animationName, bool loop, RoleEquipmentData data, Action <Avatar> createSucCallBack, Action <string> failCallBack, Action <bool> createQueueCallBack, bool isTP)
 {
     SpineChangeDataLogic.Instance.GetRoleEquipmentObject(equipmentItem, (UnityEngine.Object o) => {
         spineChangeCoreLogic.Create(avatarType, o as EquipmentObject, material, initialize, name, skinName, animationName, loop, data, createSucCallBack, failCallBack, createQueueCallBack, isTP);
     });
 }
示例#7
0
 /// <summary>
 /// 初始化角色的插槽附件
 /// </summary>
 /// <returns><c>true</c>, if role slot attachment info was inited, <c>false</c> otherwise.</returns>
 public System.Collections.IEnumerator InitRoleEquipment(RoleAnaimationData animationData, SkeletonAnimation skeletonAnim, RoleEquipmentData tempData, CombineTextureData combineTextureData, Dictionary <int, List <string> > TempSlotAttachmentDic, List <Texture2D> destoryTextureList, Action <bool> setRoleStatus, Action <string> failCallBack, bool isTP)
 {
     if (skeletonAnim == null)
     {
         if (null != failCallBack)
         {
             failCallBack.Invoke("<-初始化角色的插槽和附件信息失败->");
         }
         yield break;
     }
     System.DateTime time1 = System.DateTime.Now;
     for (int i = 0; i < tempData.RoleEquipmentItems.Count; i++)
     {
         // if(tempData.RoleEquipmentItems[i].EquipmentType == RoleEquipmentType.RoleHat || tempData.RoleEquipmentItems[i].EquipmentType == RoleEquipmentType.RoleGlasses)
         //     continue;
         EquipmentRes res = SpineChangeDataLogic.Instance.GetRoleEquipmentObject(tempData.RoleEquipmentItems[i], null);
         while (!res.isDone)
         {
             yield return(null);
         }
         combineTextureData.changeRoleCoroutine = GameManager.Instance.StartCoroutine(Change(animationData, skeletonAnim, combineTextureData, TempSlotAttachmentDic, res.GetRes(), isTP, destoryTextureList, setRoleStatus, failCallBack, true));
         yield return(combineTextureData.changeRoleCoroutine);
     }
     System.DateTime time2 = System.DateTime.Now;
     if (null != GameObject.FindObjectOfType <ChangeTest> ())
     {
         GameObject.FindObjectOfType <ChangeTest> ().text.text += "创建角色并初始化用时:" + (time2 - time1).TotalMilliseconds + "\n";
     }
     if (null != roleObject)
     {
         setRoleStatus.Invoke(true);
     }
     if (isTP)
     {
         //需要合图集
         UpdateRoleEquipment(skeletonAnim, combineTextureData);
     }
     else
     {
         DestroyResources(combineTextureData);
     }
 }
示例#8
0
 /// <summary>
 /// 通过Spine生成的json,atlas文件创建角色
 /// </summary>
 /// <param name="skeletonJson">Skeleton json.</param>
 /// <param name="atlasText">Atlas text.</param>
 /// <param name="textures">Textures.</param>
 /// <param name="material">Material.</param>
 /// <param name="initialize">If set to <c>true</c> initialize.</param>
 /// <param name="skinName">Skin name.</param>
 /// <param name="animationName">Animation name.</param>
 /// <param name="loop">If set to <c>true</c> loop.</param>
 public void Create(SpineAvatarType avatarType, EquipmentObject eo, Material material, bool initialize, string name, string skinName, string animationName, bool loop, RoleEquipmentData data, Action <Avatar> createSucCallBack, Action <string> failCallBack, Action <bool> createQueueCallBack, bool isTP)
 {
     #if UNITY_ANDROID
     GameManager.Instance.StartCoroutine(Create(avatarType, eo, SkeletonDataAsset.CreateRuntimeInstance(eo.equipmentJsonAsset, AtlasAsset.CreateRuntimeInstance(eo.equipmentTxtAsset, eo.equipmentTexture_Alpha, eo.equipmentTexture_RGB, material, initialize, true), initialize), name, animationName, skinName, loop, data, createSucCallBack, failCallBack, createQueueCallBack, isTP));
     #elif UNITY_IPHONE || UNITY_EDITOR
     GameManager.Instance.StartCoroutine(Create(avatarType, eo, SkeletonDataAsset.CreateRuntimeInstance(eo.equipmentJsonAsset, AtlasAsset.CreateRuntimeInstance(eo.equipmentTxtAsset, new Texture2D[] { eo.equipmentTexture }, material, initialize), initialize), name, animationName, skinName, loop, data, createSucCallBack, failCallBack, createQueueCallBack, isTP));
     #endif
 }
示例#9
0
        /// <summary>
        /// 通过skeletonDataAsset创建角色
        /// </summary>
        /// <returns><c>true</c>, if spine role was created, <c>false</c> otherwise.</returns>
        /// <param name="skeletonDataAsset">Skeleton data asset.</param>
        /// <param name="animationName">Animation name.</param>
        /// <param name="skinName">Skin name.</param>
        /// <param name="pos">Position.</param>
        private System.Collections.IEnumerator Create(SpineAvatarType avatarType, EquipmentObject eo, SkeletonDataAsset skeletonDataAsset, string roleGameObjectName, string animationName, string skinName, bool loop, RoleEquipmentData data, Action <Avatar> createSucCallBack, Action <string> failCallBack, Action <bool> createQueueCallBack, bool isTP)
        {
            if (skeletonDataAsset == null)
            {
                if (failCallBack != null)
                {
                    failCallBack.Invoke("<-创建角色失败->");
                }
                yield break;
            }
            GameObject roleSpine = new GameObject {
                name = roleGameObjectName
            };

            roleObject        = roleSpine;
            skeletonAnimation = SkeletonAnimation.AddToGameObject(roleSpine, skeletonDataAsset);
            skeletonAnimation.Initialize(false);
            skeletonAnimation.Skeleton.SetSkin(skinName);
            skeletonAnimation.state.SetAnimation(SpineConstValue.TrackIndex, animationName, loop);
            CreateSlotAttachmentDic(skeletonAnimation.Skeleton.Data.DefaultSkin.Attachments);
            if (null == data)
            {
                equipmentData = new RoleEquipmentData();
                equipmentData.RoleEquipmentItems = new List <RoleEquipmentItem> ();
            }
            else
            {
                equipmentData = data;
            }
            CombineTextureData combineTextureData = new CombineTextureData();

            combineTextureData.resultData = new CombineFinishedData();
            RoleAnaimationData rad = new RoleAnaimationData {
                roleJsonStr = eo.equipmentJsonAsset.text
            };
            Avatar avatar = new SpineAvatar(equipmentData, skeletonAnimation, slotAttachmentDic, rad, combineTextureData, avatarType, roleObject, eo.equipmentJsonAsset.text);

            combineTextureData.resultData.self = avatar;
            if (createSucCallBack != null)
            {
                if (null != roleSpine)
                {
                    roleSpine.SetActive(false);
                    createSucCallBack.Invoke(avatar);
                }
            }
            //初始化角色的所有服装信息
            if (equipmentData.RoleEquipmentItems.Count > 0)
            {
                if (null != combineTextureData.initRoleCoroutine)
                {
                    GameManager.Instance.StopCoroutine(combineTextureData.initRoleCoroutine);
                }
                combineTextureData.initRoleCoroutine = GameManager.Instance.StartCoroutine(InitRoleEquipment(rad, skeletonAnimation, equipmentData, combineTextureData, slotAttachmentDic, avatar.GetDestoryTextureList, roleSpine.SetActive, null, isTP));
                yield return(combineTextureData.initRoleCoroutine);
            }
            else
            {
                roleSpine.SetActive(true);
            }
            if (null != createQueueCallBack)
            {
                createQueueCallBack.Invoke(true);
            }
        }