/// <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); }
/// <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); }
/// <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; } }
/// <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])); }
/// <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); }
/// <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; }
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"); }
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; } }
/// <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()); }
/// <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); } }
/// <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); }
/// <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); }
/// <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; }
/// <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"); }