示例#1
0
        /// <summary>
        /// 获取贴图。
        /// </summary>
        /// <param name="prefab">图集预制件路径。</param>
        /// <param name="name">贴图名称。</param>
        /// <returns>贴图对象</returns>
        public Sprite GetSprite(string prefab, string name)
        {
            Dictionary <string, Sprite> atlas;

            if (!m_AtlasSprites.TryGetValue(prefab, out atlas))
            {
                atlas = LoadAtlas(prefab);
                if (atlas != null)
                {
                    m_AtlasSprites.Add(prefab, atlas);
                }
                else
                {
                    return(null);
                }
            }

            Sprite sp;

            if (!atlas.TryGetValue(name, out sp))
            {
                LogMgr.WarningLog("Can not found sprite({0}) in atlas({1}).", name, prefab);
                sp = m_Default;
            }
            return(sp);
        }
示例#2
0
        /// <summary>
        /// 先翅膀。
        /// </summary>
        /// <param name="wing">翅膀模型编号。</param>
        public void ShowWing(int wing)
        {
            if (mCurWing == wing || mPlayerObject == null)
            {
                return;
            }

            //移除原来的翅膀
            Destroy(mWing);
            mWing = null;

            //更新翅膀
            mCurWing = wing;
            if (mCurWing == 0)
            {
                return;
            }

            GameObject obj = SceneLoader.LoadModelObject(mCurWing);

            if (obj == null)
            {
                LogMgr.WarningLog("加载翅膀id:{0}失败", mCurWing);
                return;
            }

            //挂接新翅膀
            mWing = obj;
            mWing.transform.parent        = mBackHolder;
            mWing.transform.localPosition = Vector3.zero;
            mWing.transform.localRotation = Quaternion.identity;
            mWing.SetActive(true);
        }
示例#3
0
        /// <summary>
        /// 显示武器。
        /// </summary>
        /// <param name="weapon">武器模型编号。</param>
        public void ShowWeapon(int weapon, int prof)
        {
            if (mCurWeaponID == weapon || mPlayerObject == null)
            {
                return;
            }

            //移除原来的武器
            Destroy(mLeftWeapon);
            mLeftWeapon = null;
            Destroy(mRightWeapon);
            mRightWeapon = null;

            //加载新武器
            mCurWeaponID = weapon;
            if (mCurWeaponID == 0)
            {
                return;
            }

            GameObject obj = SceneLoader.LoadModelObject(mCurWeaponID);

            if (obj == null)
            {
                LogMgr.WarningLog("加载武器id:{0}失败", mCurWeaponID);
                return;
            }

            //刺客职业特殊处理
            if (prof == 4)
            {
                mRightWeapon = obj.transform.Find("DM_R_wuqi01").gameObject;
                mRightWeapon.SetActive(true);
                mRightWeapon.transform.SetParent(mRightHand);
                mRightWeapon.transform.localPosition = Vector3.zero;
                mRightWeapon.transform.localScale    = Vector3.one;
                mRightWeapon.transform.localRotation = Quaternion.identity;

                mLeftWeapon = obj.transform.Find("DM_L_wuqi01").gameObject;
                mLeftWeapon.SetActive(true);
                mLeftWeapon.transform.SetParent(mLeftHand);
                mLeftWeapon.transform.localPosition = Vector3.zero;
                mLeftWeapon.transform.localScale    = Vector3.one;
                mLeftWeapon.transform.localRotation = Quaternion.identity;
                Destroy(obj);       //移除空对象
            }
            else
            {
                mRightWeapon = obj;
                mRightWeapon.SetActive(true);
                mRightWeapon.transform.SetParent(mRightHand);
                mRightWeapon.transform.localPosition = Vector3.zero;
                mRightWeapon.transform.localScale    = Vector3.one;
                mRightWeapon.transform.localRotation = Quaternion.identity;
            }
        }
示例#4
0
 /// <summary>
 /// 获取贴图。
 /// </summary>
 /// <param name="prefab">贴图路径。(图集路径:贴图名称)</param>
 /// <returns>贴图对象</returns>
 public Sprite GetSprite(string path)
 {
     string[] names = path.Split(':');
     if (names.Length < 2)
     {
         LogMgr.WarningLog("Can not found sprite in path({0}).", path);
         return(m_Default);
     }
     return(GetSprite(names[0], names[1]));
 }
示例#5
0
        /// <summary>
        /// 检查衣服是否变化。
        /// </summary>
        private void ChangeClothes(int id)
        {
            if (mCurClothesID == id)
            {
                return;
            }
            if (CoreEntry.gActorMgr.MainPlayer != null)
            {
                if (CoreEntry.gMorphMgr.IsInMorph(CoreEntry.gActorMgr.MainPlayer.ServerID))
                {
                    return;
                }
            }
            GameObject prefab = SceneLoader.LoadModelObject(id);

            if (prefab == null)
            {
                LogMgr.WarningLog("加载衣服id:{0}失败", id);
                return;
            }
            prefab.SetActive(true);
            GameObject tmpObj = mPlayerObject;

            if (tmpObj != null)
            {
                GameObject.DestroyImmediate(tmpObj);
            }
            mPlayerObject = prefab;
            mPlayerObject.transform.SetParent(ModelParent);
            mPlayerObject.transform.localPosition = Vector3.zero;
            mPlayerObject.transform.localScale    = Vector3.one;
            mPlayerObject.transform.forward       = ModelParent.forward;
            mRightHand = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_R_Hand");
            mLeftHand  = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_L_Hand");

            mCurClothesID = id;

            int WeaponID = mCurWeaponID;
            int Wing     = mCurWing;

            mCurWeaponID = 0;
            mCurWing     = 0;
            ChangeWeapon(WeaponID);
            ChangeWing(Wing);
        }
示例#6
0
        /// <summary>
        /// 改变翅膀。
        /// </summary>
        /// <param name="id">翅膀模型编号。</param>
        private void ChangeWing(int id)
        {
            if (mCurWing == id)
            {
                return;
            }

            if (mBackHolder == null)
            {
                mBackHolder = ActorObj.RecursiveFindChild(transform, "E_back");
            }

            //更新翅膀
            if (id != 0)
            {
                GameObject obj = SceneLoader.LoadModelObject(id);
                if (obj == null)
                {
                    LogMgr.WarningLog("加载翅膀id:{0}失败", id);
                    return;
                }

                //移除原来翅膀
                if (mWing != null)
                {
                    Destroy(mWing);
                    mWing = null;
                }

                //挂接新翅膀
                mWing = obj;
                mWing.transform.parent        = mBackHolder;
                mWing.transform.localPosition = Vector3.zero;
                mWing.transform.localRotation = Quaternion.identity;
                mWing.SetActive(true);
            }
            else
            {
                Destroy(mWing);
                mWing = null;
            }
            mCurWing = id;
        }
示例#7
0
        public void ShowDress(int dress)
        {
            if (m_CurDress == dress)
            {
                return;
            }

            //清除武器和翅膀,武器是挂在人身上,不用手动Destroy
            mCurWeaponID = 0;
            mLeftWeapon  = null;
            mRightWeapon = null;
            mCurWing     = 0;
            mWing        = null;

            //清除模型
            Destroy(mPlayerObject);
            mPlayerObject = null;
            mRightHand    = null;
            mLeftHand     = null;
            mBackHolder   = null;

            //加载新模型
            m_CurDress = dress;
            if (m_CurDress == 0)
            {
                return;
            }

            mPlayerObject = SceneLoader.LoadModelObject(m_CurDress);
            if (mPlayerObject == null)
            {
                LogMgr.WarningLog("加载衣服id:{0}失败", m_CurDress);
                return;
            }

            mPlayerObject.transform.SetParent(ModelParent);
            mPlayerObject.transform.localPosition = Vector3.zero;
            mPlayerObject.transform.localScale    = Vector3.one;
            mPlayerObject.transform.forward       = ModelParent.forward;
            mRightHand  = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_R_Hand");
            mLeftHand   = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_L_Hand");
            mBackHolder = ActorObj.RecursiveFindChild(transform, "E_back");
        }
示例#8
0
        public static void Log(string logString, string stackTrace, LogType type)
        {
            if (!m_isDebug)
            {
                return;
            }
            switch (type)
            {
            case LogType.Log:
                LogMgr.DebugLog(logString);
                break;

            case LogType.Warning:
                LogMgr.WarningLog(logString);
                break;

            case LogType.Error:
                LogMgr.ErrorLog(logString);
                break;
            }
        }
示例#9
0
        /// <summary>
        /// 加载图集。
        /// </summary>
        /// <param name="prefab">图集预制件路径。</param>
        /// <returns>图集的贴图集合。</returns>
        private Dictionary <string, Sprite> LoadAtlas(string prefab)
        {
            string     path = "UI/Atlas/" + prefab;
            GameObject obj  = (GameObject)CoreEntry.gResLoader.Load(path, typeof(GameObject));

            if (obj == null)
            {
                //Log.Warning("Can not found the prefab. path:{0}", prefab);
                return(null);
            }

            AtlasHolder holder = obj.GetComponent <AtlasHolder>();

            if (holder == null)
            {
                LogMgr.WarningLog("The prefab has not component of 'AtlasHolder'. path:{0}", prefab);
                return(null);
            }

            return(holder.GetSprites());
        }
示例#10
0
        /// <summary>
        /// 更新物品。
        /// </summary>
        /// <param name="result">服务器下发信息。</param>
        public void UpdateItem(MsgData_sItemUpdate result)
        {
            ItemInfo info = GetItemInfo(result.Pos);

            if (info == null)
            {
                LogMgr.WarningLog("该格子原本并没有物品 bag:{0} pos:{1}", result.Bag, result.Pos);
            }

            //加入物品
            if (info == null)
            {
                info = ItemInfo.GetItemInfoClass(result.Bag);
                mItemInfos.Add(result.Pos, info);
            }
            info.Init(result);
            if (info.ID == 0 || info.Count == 0)
            {
                mItemInfos.Remove(info.Pos);
            }
        }
示例#11
0
        /// <summary>
        /// 取该目标点附近的非阻挡点。
        /// </summary>
        /// <param name="from">场景编号。</param>
        /// <param name="from">起点。</param>
        /// <param name="to">终点。</param>
        /// <param name="dst">可移动的目标点。</param>
        /// <param name="r">附近半径。</param>
        /// <returns></returns>
        public bool GetNearPoint(int sendID, Vector3 from, Vector3 to, out Vector3 dst, int r = 1)
        {
            if (sendID != MapMgr.Instance.EnterMapId)
            {
                LogMgr.WarningLog("场景数据目前使用当前场景,应该改成sendID对应的数据");
                dst = to;
                return(true);
            }

            //目标点可达
            if (!IsBlocked(to))
            {
                dst = to;
                return(true);
            }

            //开始一圈一圈地查找最近点
            //int direction_x = to.x - from.x > 0 ? 1 : -1;
            //int direction_z = to.z - from.z > 0 ? 1 : -1;
            //for (int i = -1; i <= 1; i++)
            //{
            //    for (int j = -1; j <= 1; j++)
            //    {
            //        int x = direction_x * i;
            //        int z = direction_z * j;
            //        Vector3 newPoint = new Vector3(to.x + x, to.y, to.z + z);
            //        bool bWalk = IsBlocked(newPoint);
            //        if (!bWalk)
            //        {
            //            //return newPoint;
            //        }
            //    }
            //}

            //return to;
            dst = Vector3.zero;
            return(false);
        }
示例#12
0
        /// <summary>
        /// 显示模型。
        /// </summary>
        public void ShowModel()
        {
            //创建初始模型
            if (mPlayerObject == null)
            {
                //创建角色
                mCurClothesID = PlayerData.Instance.GetDressModelID();
                mPlayerObject = SceneLoader.LoadModelObject(mCurClothesID);
                if (mPlayerObject == null)
                {
                    LogMgr.WarningLog("加载衣服id:{0}失败", mCurClothesID);
                    return;
                }
                mPlayerObject.transform.SetParent(ModelParent);
                mPlayerObject.transform.localPosition = Vector3.zero;
                mPlayerObject.transform.localScale    = Vector3.one;
                mPlayerObject.transform.forward       = ModelParent.forward;
                mRightHand    = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_R_Hand");
                mLeftHand     = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_L_Hand");
                mCurClothesID = 0;
            }

            //创建初始武器
            if (mRightWeapon == null)
            {
                //创建武器
                ChangeWeapon(PlayerData.Instance.GetWeaponModelID());
            }
            mCurClothesID = 0;
            mCurWing      = PlayerData.Instance.GetWingModelID();
            mCurWeaponID  = PlayerData.Instance.GetWeaponModelID();
            ChangeClothes(PlayerData.Instance.GetDressModelID());
            mPlayerObject.GetComponent <Animation>().Play("stand");
            CameraT.localPosition = new Vector3(0, 0, 0f);
            CameraT.localRotation = Quaternion.Euler(0, 0, 0);
        }
示例#13
0
        /// <summary>
        /// 改变武器。
        /// </summary>
        public void ChangeWeapon(int id)
        {
            //已经有同名武器了
            if (mCurWeaponID == id)
            {
                return;
            }

            GameObject obj = SceneLoader.LoadModelObject(id);

            if (obj == null)
            {
                LogMgr.WarningLog("加载武器id:{0}失败", id);
                return;
            }

            if (PlayerData.Instance.Job == 4)
            {
                //刺客时双手武器特殊处理
                if (mRightWeapon != null)
                {
                    Destroy(mRightWeapon);
                    mRightWeapon = null;
                }
                mRightWeapon = obj.transform.Find("DM_R_wuqi01").gameObject;
                mRightWeapon.SetActive(true);
                mRightWeapon.transform.SetParent(mRightHand);
                mRightWeapon.transform.localPosition = Vector3.zero;
                mRightWeapon.transform.localScale    = Vector3.one;
                mRightWeapon.transform.localRotation = Quaternion.identity;

                if (mLeftWeapon != null)
                {
                    Destroy(mLeftWeapon);
                    mLeftWeapon = null;
                }
                mLeftWeapon = obj.transform.Find("DM_L_wuqi01").gameObject;
                mLeftWeapon.SetActive(true);
                mLeftWeapon.transform.SetParent(mLeftHand);
                mLeftWeapon.transform.localPosition = Vector3.zero;
                mLeftWeapon.transform.localScale    = Vector3.one;
                mLeftWeapon.transform.localRotation = Quaternion.identity;
                Destroy(obj);       //移除空对象
            }
            else
            {
                if (mRightWeapon != null)
                {
                    Destroy(mRightWeapon);
                    mRightWeapon = null;
                }

                mRightWeapon = obj;
                mRightWeapon.SetActive(true);
                mRightWeapon.transform.SetParent(mRightHand);
                mRightWeapon.transform.localPosition = Vector3.zero;
                mRightWeapon.transform.localScale    = Vector3.one;
                mRightWeapon.transform.localRotation = Quaternion.identity;
            }
            mCurWeaponID = id;
        }
示例#14
0
        /// <summary>
        /// 显示模型。
        /// </summary>
        public void ShowModel()
        {
            if (mPlayerObject != null)
            {
                Destroy(mPlayerObject);
                mPlayerObject = null;
            }

            //角色模型
            int dress = OtherPlayerData.Instance.GetDressModelID();

            if (dress == 0)
            {
                return;
            }

            mPlayerObject = SceneLoader.LoadModelObject(dress);
            if (mPlayerObject == null)
            {
                LogMgr.WarningLog("加载衣服id:{0}失败", dress);
                return;
            }

            mPlayerObject.transform.SetParent(ModelParent);
            mPlayerObject.transform.localPosition = Vector3.zero;
            mPlayerObject.transform.localScale    = Vector3.one;
            mPlayerObject.transform.forward       = ModelParent.forward;
            Transform mRightHand = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_R_Hand");
            Transform mLeftHand  = ActorObj.RecursiveFindChild(mPlayerObject.transform, "DM_L_Hand");

            //物品
            int weapon = OtherPlayerData.Instance.GetWeaponModelID();

            if (weapon != 0)
            {
                GameObject obj = SceneLoader.LoadModelObject(weapon);
                if (obj != null)
                {
                    if (OtherPlayerData.Instance.Prof == 4)
                    {
                        GameObject mRightWeapon = obj.transform.Find("DM_R_wuqi01").gameObject;
                        mRightWeapon.SetActive(true);
                        mRightWeapon.transform.SetParent(mRightHand);
                        mRightWeapon.transform.localPosition = Vector3.zero;
                        mRightWeapon.transform.localScale    = Vector3.one;
                        mRightWeapon.transform.localRotation = Quaternion.identity;

                        GameObject mLeftWeapon = obj.transform.Find("DM_L_wuqi01").gameObject;
                        mLeftWeapon.SetActive(true);
                        mLeftWeapon.transform.SetParent(mLeftHand);
                        mLeftWeapon.transform.localPosition = Vector3.zero;
                        mLeftWeapon.transform.localScale    = Vector3.one;
                        mLeftWeapon.transform.localRotation = Quaternion.identity;
                        Destroy(obj);       //移除空对象
                    }
                    else
                    {
                        GameObject mRightWeapon = obj;
                        mRightWeapon.SetActive(true);
                        mRightWeapon.transform.SetParent(mRightHand);
                        mRightWeapon.transform.localPosition = Vector3.zero;
                        mRightWeapon.transform.localScale    = Vector3.one;
                        mRightWeapon.transform.localRotation = Quaternion.identity;
                    }
                }
                else
                {
                    LogMgr.WarningLog("加载武器id:{0}失败", weapon);
                }
            }

            //翅膀
            int wing = OtherPlayerData.Instance.GetWingModelID();

            if (wing != 0)
            {
                Transform  mBackHolder = ActorObj.RecursiveFindChild(mPlayerObject.transform, "E_back");
                GameObject obj         = SceneLoader.LoadModelObject(wing);
                if (obj != null)
                {
                    GameObject mWing = obj;
                    mWing.transform.parent        = mBackHolder;
                    mWing.transform.localPosition = Vector3.zero;
                    mWing.transform.localRotation = Quaternion.identity;
                    mWing.SetActive(true);
                }
                else
                {
                    LogMgr.WarningLog("加载翅膀id:{0}失败", wing);
                }
            }

            mPlayerObject.GetComponent <Animation>().Play("stand");
        }