Esempio n. 1
0
        //int m_num = 1;

        //初始化
        public void Init(GameObject obj)
        {
            m_actorObject = obj;
            //m_ani = m_actorObject.GetComponent<Animation>();
            m_actor = (m_actorObject.GetComponent <ActorObj>());

            m_transform          = m_actorObject.transform;
            m_animationCurveData = m_actorObject.GetComponent <AnimationCurveData>();
            if (m_animationCurveData == null)
            {
                //LogMgr.LogError(obj.name + ":缺少动画曲线组件AnimationCurveData,可能将导致异常。美术请检查该模型!!!");
            }

            if (m_actor != null && m_actor != null)
            {
                m_curRadius = m_actor.GetColliderRadius();
            }
            else
            {
                LogMgr.LogError("Please Check m_actor:" + m_actor + " : " + m_actor);
            }

            //如果是PVP状态
            if (CoreEntry.gGameMgr.IsPvpState())
            {
                m_curRadius += 1.8f;
            }
        }
Esempio n. 2
0
 /// <summary>
 /// 初始化背包。
 /// </summary>
 /// <param name="result">服务器下发信息。</param>
 public void Init(MsgData_sQueryItemResult result)
 {
     mID          = result.ID;
     mBagType     = result.Bag;
     mSize        = result.Size;
     OpenLastTime = result.OpenLastTime;
     mItemInfos.Clear();
     for (int i = 0; i < result.ItemInfoList.Count; ++i)
     {
         ItemInfo info = ItemInfo.GetItemInfoClass(mBagType);
         info.Init(result.ItemInfoList[i]);
         if (ConfigManager.Instance.BagItem.GetItemConfig(info.ID) != null)
         {
             if (!mItemInfos.ContainsKey(info.Pos))
             {
                 mItemInfos.Add(info.Pos, info);
             }
             else
             {
                 LogMgr.LogError("格子已有物品 bag:{0} pos:{1}", info.Bag, info.Pos);
             }
         }
         else
         {
             LogMgr.LogError("物品配置不存在 bag:{0} pos:{1} id:{2}", info.Bag, info.Pos, info.ID);
         }
     }
 }
Esempio n. 3
0
        public void Cache(T obj)
        {
            if (obj == null)
            {
                return;
            }
            if (m_CacheObjects.Contains(obj))
            {
#if UNITY_EDITOR
                LogMgr.LogError("重复回收");
#endif
                return;
            }

            obj.OnRecycle();
            if (m_CacheObjects.Count < m_Size)
            {
                m_CacheObjects.Push(obj);
            }
            else
            {
                obj.OnRelease();

#if UNITY_EDITOR
                //LogMgr.LogWarning("The cache pool is full and the obj has be release. Size:{0}", m_Size);
#endif
            }
        }
Esempio n. 4
0
        void Print1()
        {
            {
                var r = ProfilerData.GetLuaSrcResMem();
                LogMgr.LogError("lua文件数 : " + r.count + ",   内存 : " + r.MB + " MB");
                LogMgr.LogError("lua总内存 : " + ProfilerData.GetLuaRuntimeMem() + " MB");
            }

            {
                var r = ProfilerData.GetMemByType <TextAsset>((a) =>
                {
                    return(ProfilerData.IsLua(a.name));
                });
                LogMgr.LogError("### 实际 lua文件数 : " + r.count + ",   内存 : " + r.MB + " MB");
            }

            {
                HashSet <string> set = new HashSet <string>();
                var r = ProfilerData.GetMemByType <TextAsset>((a) =>
                {
                    var ln = a.name.ToLower();
                    if (set.Contains(ln))
                    {
                        return(false);
                    }
                    set.Add(ln);
                    return(ln.Contains(".lua"));
                });
                LogMgr.LogError("### 实际 lua文件数 2 : " + r.count + ",   内存 : " + r.MB + " MB");
            }

            {
                var r = ProfilerData.GetCSVResMem();
                LogMgr.LogError("csv文件数 : " + r.count + ",   内存 : " + r.MB + " MB");
            }

            {
                nameSet.Clear();
                var r = ProfilerData.GetMemByType <TextAsset>((a) =>
                {
                    if (nameSet.Contains(a.name.ToLower()))
                    {
                        return(false);
                    }
                    nameSet.Add(a.name.ToLower());
                    return(ProfilerData.IsCSV(a.name));
                });
                LogMgr.LogError("### 实际 csv文件数 : " + r.count + ",   内存 : " + r.MB + " MB");
            }

            {
                var r = ProfilerData.GetMemByType <Texture>((a) =>
                {
                    return(!string.IsNullOrEmpty(a.name));
                });
                LogMgr.LogError("纹理数 : " + r.count + ",   纹理内存 : " + r.MB + " MB");
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 场景中加载怪物模型(单个添加)
        /// </summary>
        /// <returns>The load point.</returns>
        /// <param name="info">Info.</param>
        /// <param name="index">Index.</param>
        /// <param name="callback">Callback.</param>
        public void SceneLoadPoint(MonsterType type, MonsterInfo info, int index)
        {
            if (mapId == 0)
            {
                LogMgr.LogError("请先选择地图!");
                return;
            }
            if (!parentObj.ContainsKey(type) || parentObj[type] == null)
            {
                GameObject p = (GameObject)UnityEngine.Object.Instantiate(CoreEntry.gResLoader.Load(_parentPrefab));
                p.name = parentStr[type];
                p.transform.position = Vector3.zero;
                parentObj[type]      = p;
            }

            MonsterItem tt = new MonsterItem();

            if (!items.ContainsKey(type))
            {
                items[type] = new Dictionary <int, GameObject>();
            }
            if (items[type].ContainsKey(info.index))
            {
                tt = items[type][info.index].GetComponent <MonsterItem>();
                tt.SetV(info);
            }
            else
            {
                GameObject obj = (GameObject)Instantiate(CoreEntry.gResLoader.Load(_itemPrefab));
                obj.name             = info.name.ToString();
                tt                   = obj.GetComponent <MonsterItem>();
                obj.transform.parent = parentObj[type].transform;
                tt.RefreshData(info);
                items[type][info.index] = obj;
            }

            //         if (!items.ContainsKey(type))
            //         {
            //             items[type] = new List<GameObject>();
            //         }
            //if (items[type].Count >= index + 1) {
            //	tt =  items[type][index].GetComponent<MonsterItem>();
            //	tt.SetV(info[index]);

            //} else {
            //	GameObject obj = (GameObject)UnityEngine.Object.Instantiate(Resources.Load(itemStrPath[type]));
            //	obj.name = index.ToString();
            //	tt = obj.GetComponent<MonsterItem>();
            //	obj.transform.parent = parentObj[type].transform;
            //	tt.RefreshData(info[index]);
            //	items[type].Add(obj);
            //}
            //         tt.gameObject.name = item.Value[i].name;

            //         return info [index];
        }
Esempio n. 6
0
        /// <summary>
        /// 播放过场。
        /// </summary>
        /// <param name="path">过场动画路径。</param>
        public void TryPlayerCutScene(LuaTable cfg)
        {
            //上一个动画还未结束
            if (Time.realtimeSinceStartup < m_LastPlayStopTime)
            {
                return;
            }

            //首次播放检查
            int id = cfg.Get <int>("id");

            if (cfg.Get <int>("time") == TRIGGER_TIME_ONCE)
            {
                if (IsHavePlay(id))
                {
                    return;
                }
                else
                {
                    SetHavePlay(id);
                }
            }

            //播放动画
            GameObject prefab = (GameObject)CoreEntry.gResLoader.Load(cfg.Get <string>("animation"), typeof(GameObject));

            if (prefab == null)
            {
                LogMgr.LogError("加载过场动画失败 path:{0}", cfg.Get <string>("animation"));
                return;
            }
            GameObject  obj = GameObject.Instantiate(prefab) as GameObject;
            USSequencer us  = obj.GetComponent <USSequencer>();

            if (us == null)
            {
                LogMgr.LogError("播放场动画失败,未找到USSequencer组建 path:{0}", cfg.Get <string>("animation"));
                return;
            }
            us.PlaybackFinished += OnAniEnd;
            m_CurID              = id;
            OnAniStart(us);

            //保存结束时间,在次期间不再播动画
            float       duration = 0;
            AutoDestroy ad       = obj.GetComponent <AutoDestroy>();

            if (ad != null)
            {
                duration = ad.Delay;
            }
            m_LastPlayStopTime = Time.realtimeSinceStartup + duration;
#if UNITY_EDITOR
            LogMgr.Log("播放过场动画 duration:{0} path:{1}", duration, cfg.Get <string>("animation"));
#endif
        }
Esempio n. 7
0
 //
 public void onConnected(bool isSuccessfull, IPEndPoint remote)
 {
     if (isSuccessfull == false)
     {
         LogMgr.LogError("===== connect server failed !!! " + m_page + " address:" + remote.ToString());
     }
     else
     {
         LogMgr.UnityLog("===== connect server success !!! " + m_page + " address:" + remote.ToString());
     }
 }
Esempio n. 8
0
 public void onConnectedError(int errorCode)
 {
     if (!bReconnect)//重连状态下
     {
         if (errorCode == 10051 && MapMgr.Instance.CurMapType != MapMgr.MapType.Map_Login && MapMgr.Instance.CurMapType != MapMgr.MapType.Map_None)
         {
             LogMgr.LogError("onConnectedError : StartReconnect");
             StartReconnect();
             IsShowReconnectedDialog = false;
         }
     }
 }
Esempio n. 9
0
 Object getJiaoYin()
 {
     if (m_jiaoYinPrefab == null)
     {
         m_jiaoYinPrefab = CoreEntry.gResLoader.LoadResource("Effect/scence/sf_jiaoyin");
     }
     if (m_jiaoYinPrefab == null)
     {
         LogMgr.LogError("找不到 prefab: " + "Effect/scence/sf_jiaoyin");
     }
     return(m_jiaoYinPrefab);
 }
Esempio n. 10
0
        void AutoExitState()
        {
            LogMgr.LogError("DizzState, AutoExitState");
            CancelInvoke("ExitBehitState");
            CancelInvoke("AutoExitState");
            m_isNonControl = false;

            StateParameter param = new StateParameter();

            param.state = ACTOR_STATE.AS_STAND;
            m_actor.RequestChangeState(param);
        }
Esempio n. 11
0
        /// <summary>
        /// 服务器通知:圣盾换模型结果 msgId:8725
        /// </summary>
        /// <param name="ge"></param>
        /// <param name="parameter"></param>
        private void OnPiFengChangeModel(GameEvent ge, EventParameter parameter)
        {
            MsgData_sPiFengChangeModel resp = parameter.msgParameter as MsgData_sPiFengChangeModel;

            if (resp.result == 0)
            {
                LogMgr.LogError("更换成功 " + resp.result);
            }
            else
            {
                LogMgr.LogError("更换失败 " + resp.result);
            }
        }
Esempio n. 12
0
        public void TriggerEvent(int ge, EventParameter parameter)
        {
            //将事件响应队列复制一个副本,因为事件在响应的过场中有可能会改变响应列表
            List <EventNode> list;

            if (!eventMap.TryGetValue(ge, out list))
            {
                if (parameter != null && parameter.autoRecycle)
                {
                    EventParameter.Cache(parameter);
                }
                return;
            }

            //有可能在触发的过程中重复调用TriggerEvent,所以列表副本不能共享一下,需要动态创建
            Triggerlist triggerlist = m_CacheTriggerlist.Get();

            triggerlist.Nodes.AddRange(list);

            //逐个触发
            for (int i = 0; i < triggerlist.Nodes.Count; i++)
            {
                EventNode node = triggerlist.Nodes[i];
                try
                {
                    node.Trigger(ge, parameter);
                }
                catch (MissingReferenceException e)
                {
                    //如果向一个已经被销毁的对象发送消息,则清除之
                    list.Remove(node);
#if UNITY_EDITOR
                    LogMgr.LogError(e.ToString());
#endif
                }
            }
            m_CacheTriggerlist.Cache(triggerlist);
            if (parameter != null && parameter.autoRecycle)
            {
                EventParameter.Cache(parameter);
            }

            // 切换场景时移除相关的监听对象
            if (ge == (int)GameEvent.GE_BEFORE_LOADSCENE)
            {
                OnLoadSceneRecycle();
            }
        }
Esempio n. 13
0
 /// <summary>
 /// 索引值, 类型
 /// </summary>
 /// <param name="index"></param>
 /// <param name="type"></param>
 public void SelectionTypeObj(int index, MonsterType type)
 {
     if (items.ContainsKey(type) && items[type].ContainsKey(index))
     {
         GameObject t = items[type][index];
         t.name = t.GetComponent <MonsterItem>().info.name;
         //                LogMgr.LogError("t.name  " + t.name);
         EditorGUIUtility.PingObject(t);
         Selection.activeGameObject = t;
         //                t.GetComponent<MonsterItem>().ChangeModelShow();
     }
     else
     {
         LogMgr.LogError("search  false");
     }
 }
Esempio n. 14
0
        public bool bindMsgExHandler(Int16 cmd, MsgExHandler handler)
        {
            MsgExHandler handlerEvent;

            if (msgExHandlers.TryGetValue(cmd, out handlerEvent))
            {
#if UNITY_EDITOR
                LogMgr.LogError("网络扩展消息处理重复注册:{0}", cmd);
#endif
                return(false);
            }
            else
            {
                msgExHandlers.Add(cmd, handler);

                return(true);
            }
        }
Esempio n. 15
0
        public void OnGetWaBaoReward(GameEvent ge, EventParameter parameter)
        {
            LogMgr.LogError("receive GetWaBaoReward");
            MsgData_sGetWaBaoReward resp = parameter.msgParameter as MsgData_sGetWaBaoReward;

            if (resp.result == 0)
            {
                MsgData_sBossWabaoList tt = new MsgData_sBossWabaoList();
                tt.bossId            = resp.bossId;
                tt.num               = resp.num;
                wabaoList[tt.bossId] = tt;
            }
            else
            {
                LogMgr.LogError("探宝失败");
            }
            CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_WorldBossGetReward, parameter);
        }
Esempio n. 16
0
 /// <summary>
 /// 场景中删除模型。。。。
 /// </summary>
 /// <returns>The load point.</returns>
 /// <param name="info">Info.</param>
 /// <param name="index">Index.</param>
 /// <param name="callback">Callback.</param>
 public void SceneDelePoint(int index, MonsterType tp)
 {
     if (!items.ContainsKey(tp))
     {
         LogMgr.LogError("类型错误");
         return;
     }
     if (items[tp].ContainsKey(index))
     {
         LogMgr.Log("已删除  " + index);
         GameObject t = items[tp][index];
         DestroyImmediate(t);
         items[tp].Remove(index);
     }
     else
     {
         LogMgr.LogError("找不到  " + index);
     }
 }
Esempio n. 17
0
        /// <summary>
        /// 使用属性丹。
        /// </summary>
        /// <param name="data">网络消息数据。</param>
        private void OnUseAttrDan(MsgData data)
        {
            MsgData_sUseAttrDan info = data as MsgData_sUseAttrDan;

            LogMgr.LogError(string.Format("OnUseAttrDan type:{0} result:{1} pillnumber:{2}", info.Type, info.Result, info.PillNumber));
            if (info.Result == 0)
            {
                if (info.Type == AttrDanType.Ride)
                {
                    mPillNum = info.PillNumber;
                    TriggerEventRideUseAttrDan(info.Type);
                }
                else if (info.Type == AttrDanType.RidePer)
                {
                    mPillNumPercent = info.PillNumber;
                    TriggerEventRideUseAttrDan(info.Type);
                }
            }
        }
Esempio n. 18
0
            protected override void Main()
            {
                LogMgr.UnityLog("NetMgr.ReceiverThread.Main: Begin");

                while (!IsTerminateFlagSet())
                {
                    try
                    {
                        ReadFromStream();
                        ScanPackets();
                    }
                    catch (Exception e)
                    {
                        LogMgr.LogError("rcv thread error:" + e);
                    }
                }

                LogMgr.UnityLog("NetMgr.ReceiverThread.Main: End");
            }
Esempio n. 19
0
        public static void CreateMagicKey(ActorObj attackObj, int skillID)
        {
            GameObject efxObj       = null;
            LuaTable   skill_action = CoreEntry.gSkillMgr.GetSkillActon(skillID);

            if (skill_action != null)
            {
                object obj = CoreEntry.gResLoader.LoadResource(skill_action.Get <string>("skilleffect"));
                if (obj == null)
                {
                    LogMgr.LogError("找不到attackEfxPrefab:" + skill_action.Get <string>("skilleffect"));
                }

                efxObj = Instantiate((GameObject)obj) as GameObject; //CoreEntry.gGameObjPoolMgr.InstantiateEffect(param.actionEfx);
                if (efxObj != null)
                {
                    efxObj.transform.parent = attackObj.transform;

                    efxObj.transform.localPosition = Vector3.zero;
                    //efxObj.transform.localRotation = Vector3.zero;
                    efxObj.transform.localScale = Vector3.one;
                }
            }
            if (efxObj != null)
            {
                SkillMagicKeyBase mk = efxObj.GetComponent <SkillMagicKeyBase>();
                if (mk == null)
                {
                    mk = efxObj.AddComponent <SkillMagicKeyBase>();
                }
                mk.Init(attackObj, skillID);
            }

            LuaTable skillCfg = ConfigManager.Instance.Skill.GetSkillConfig(skillID);

            if (null != skillCfg && skillCfg.Get <int>("showtype") == (int)SkillShowType.ST_MAGICKEY)
            {
                EventParameter param = EventParameter.Get();
                param.intParameter    = skillCfg.Get <int>("showtype");
                param.stringParameter = skillCfg.Get <string>("name");
                CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_FLY_SKILL, param);
            }
        }
Esempio n. 20
0
        //打开文件
        public bool OpenXml(string filePath)
        {
            XmlDocument xmlDoc = new XmlDocument();

            //Object fileByte  = Resources.Load(filePath);
            TextAsset fileByte = CoreEntry.gResLoader.LoadTextAsset(filePath, SenLib.AssetType.Xml); //(TextAsset)CoreEntry.gResLoader.Load(filePath, typeof(TextAsset), 11);

            if (fileByte == null)
            {
                LogMgr.UnityLog("Error  加载XML 失败: " + filePath);
                return(false);
            }
            Encoding utf8NoBom = new UTF8Encoding(false);

            //StringBuilder builder = new StringBuilder();
            //builder.Append(utf8NoBom.GetString(fileByte.bytes, 0, fileByte.bytes.Length ));
            //builder.Append("\n\n");
            string strXml = utf8NoBom.GetString(fileByte.bytes, 0, fileByte.bytes.Length);

            //string strXml =builder.ToString();


            //Encoding encoding = Encoding.UTF8; //Encoding.ASCII;//
            //StreamReader sr = new StreamReader(new MemoryStream(fileByte.bytes), encoding);

            try
            {
                xmlDoc.LoadXml(strXml);
            }
            catch (System.Exception e)
            {
                LogMgr.LogError("error!  load XML   path:" + filePath + "     \n" + e);
                return(false);
            }

            //调整filepath,绝对路径
            m_filePath = Application.dataPath + @"/ResData/" + filePath + @".xml";

            m_xmlDoc = xmlDoc;

            return(true);
        }
Esempio n. 21
0
        //private int type;

        public LineFormula(Node start, Node end, int type)
        {
            //this.type = type;

            if (start.position.x == end.position.x)
            {
                if (type == 1)
                {
                    a = 0;
                    b = start.position.x;
                }
                else
                {
                    LogMgr.LogError("LineFormula error");
                }
            }
            else if (start.position.y == end.position.y)
            {
                if (type == 0)
                {
                    a = 0;
                    b = start.position.y;
                }
                else
                {
                    LogMgr.LogError("LineFormula error");
                }
            }
            else
            {
                if (type == 0)
                {
                    a = (end.position.y - start.position.y) / (end.position.x - start.position.x);
                    b = start.position.y - a * start.position.x;
                }
                else if (type == 1)
                {
                    a = (end.position.x - start.position.x) / (end.position.y - start.position.y);
                    b = start.position.x - a * start.position.y;
                }
            }
        }
Esempio n. 22
0
        void Awake()
        {
            m_ch        = this.GetComponent <CharacterController>();
            m_transform = this.transform;

            if (fx_renwuzhixiang == null)
            {
                Object obj = CoreEntry.gResLoader.Load("Effect/skill/remain/fx_jiaodiguanghuan");
                if (obj == null)
                {
                    LogMgr.LogError("找不到 prefab: " + "Effect/skill/remain/fx_jiaodiguanghuan");
                    return;
                }

                fx_renwuzhixiang = GameObject.Instantiate(obj) as GameObject;
                fx_renwuzhixiang.transform.parent        = gameObject.transform;
                fx_renwuzhixiang.transform.localPosition = new Vector3(0.0f, 0.1f, 0.0f);
                fx_renwuzhixiang.transform.localRotation = Quaternion.identity;
                fx_renwuzhixiang.SetActive(true);
            }
        }
Esempio n. 23
0
        public void InitPlayer()
        {
            //初始化
            base.Init();

            //for debug
            this.SetIdFlag(1);

            //加载行为树
            if (m_behaviorTree.Length > 0)
            {
                m_btLoadResult = btload(m_behaviorTree, true);
                if (m_btLoadResult)
                {
                    btsetcurrent(m_behaviorTree);
                }
                else
                {
                    LogMgr.LogError("load bt tree failed! " + m_behaviorTree);
                }
            }
        }
Esempio n. 24
0
        //移动
        public override void MovePos(Vector3 pos)
        {
            if (m_agent == null)
            {
                LogMgr.LogError("NavMeshAgent is null");
                return;
            }


            m_agent.enabled = true;
            if (!m_agent.gameObject.activeSelf)
            {
                return;
            }
            bool bRet = m_agent.SetDestination(pos);

            if (!bRet)
            {
                NavMeshHit hit;

                if (NavMesh.SamplePosition(transform.position, out hit, 100.0f, -1))
                {
                    pos.y = hit.position.y;
                }
            }

            m_dstPos = pos;


            //开始移动
            EventParameter param = EventParameter.Get();

            param.goParameter = this.gameObject;
            m_eventMgr.TriggerEvent(GameEvent.GE_PLAYER_MOVE_BEGIN, param);

            //0.01秒后开始计算距离
            Invoke("BeginRun", 0.01f);
        }
Esempio n. 25
0
        /// <summary>
        /// 触摸拖拽。
        /// </summary>
        /// <param name="data">触摸数据。</param>
        public void OnDrag(BaseEventData data)
        {
            LogMgr.LogError("OnDrag ...");
            //取消点击的判断距离
            PointerEventData ped = data as PointerEventData;

            if (m_CheckClick)
            {
                if ((ped.position - m_TouchPosition).sqrMagnitude >= CancelClickDistance * CancelClickDistance)
                {
                    m_CheckClick = false;
                }
            }

#if UNITY_EDITOR
            if (!m_CheckClick)
            {
                Vector2 delta = ped.delta;
                if (Input.GetKey(KeyCode.S))
                {
                    //缩放
                    float d = (delta.x + delta.y) / 2;
                    Scale(d);
                }
                else if (Input.GetKey(KeyCode.D))
                {
                    //平移
                    Move(delta.x, delta.y);
                }
                else
                {
                    //旋转
                    Rotate(delta.x, delta.y);
                }
            }
#endif
        }
Esempio n. 26
0
 public void OnActivityFinish(GameEvent ge, EventParameter parameter)
 {
     LogMgr.LogError("receive ActivityFinish");
 }
Esempio n. 27
0
        void UpdateSkillIcon()
        {
            if ((int)enSkillIndex.Player_Skill_Beauty == buttonindex)
            {
                //Configs.changeConfig changCfg = CSVConfigManager.GetchangeConfig(skillID);
                LuaTable changeCfg = ConfigManager.Instance.Actor.GetChangeConfig(skillID);
                if (changeCfg != null)
                {
                    BeautyChangeTime = changeCfg.Get <float>("time");
                }
                GetHeroChangeTime fun = LuaMgr.Instance.GetLuaEnv().Global.GetInPath <GetHeroChangeTime>("ModelManager.HeroModel.GetHeroChangeTime");
                if (fun != null)
                {
                    BeautyChangeTime = BeautyChangeTime + fun();
                }
            }
            string sIconName = GetSkillIcon(skillID);

            if (sIconName != null)
            {
                m_ImageSkillIcon.sprite  = AtlasSpriteManager.Instance.GetSprite(sIconName);
                m_ImageSkillIcon.enabled = true;
            }
            else
            {
                LogMgr.LogError("技能没找到图标  skillID:" + skillID);
                //m_ImageDisable.gameObject.SetActive(true);
                m_ImageSkillIcon.gameObject.SetActive(false);
            }


            skillDesc = ConfigManager.Instance.Skill.GetSkillConfig(skillID);

            if (m_ImageDisable != null && (buttonindex <= (int)enSkillIndex.Beauty_att || buttonindex > (int)enSkillIndex.Player_Skill4))
            {
                m_ImageDisable.gameObject.SetActive(false);
                if (EnergyBall != null)
                {
                    EnergyBall.gameObject.SetActive(true);
                }
            }



            //重新更新技能CD时间
            if (CoreEntry.gActorMgr.MainPlayer.IsInCoolDownTime(skillID) == true) //
            {
                if (m_ImageCD != null)
                {
                    m_ImageCD.enabled = true;
                }
                if (m_TextCDCountDown != null)
                {
                    m_TextCDCountDown.enabled = true;
                }
            }
            else
            {
                fBeginTime = 0;
                fDurTime   = 0;
                totalTime  = 0.0f;
                bCDCool    = false;

                m_ImageCD.fillAmount = 1f;
                if (EnergyBallMaterial != null)
                {
                    EnergyBallMaterial.material.SetFloat("_offect", 1);
                }

                if (buttonindex != (int)enSkillIndex.Player_Skill_Beauty)
                {
                    m_ImageCD.enabled         = false;
                    m_TextCDCountDown.enabled = false;
                }
            }
        }
Esempio n. 28
0
        private void OnEnterScene(GameEvent ge, EventParameter parameter)
        {
            NetReadBuffer buffer = parameter.objParameter as NetReadBuffer;
            CacheEnterHead.unpack(buffer);
            buffer.pos = 0;     //重新给具体类型的消息读取
            if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_Player)//其它玩家
            {
                MsgData_sSceneObjectEnterHuman humanStruct = new MsgData_sSceneObjectEnterHuman();
                humanStruct.unpack(buffer);

                //队友一定创建
                bool inteam = PlayerData.Instance.TeamData.IsInTeam(humanStruct.Guid);
                int num = inteam ? 0 : (CoreEntry.gActorMgr.GetAllPlayerActors().Count - 1 + GetCacheNumber(EnEntType.EnEntType_Player));
                if (num < CreateMaxPlayer)
                {
                    CacheSceneObj(EnEntType.EnEntType_Player, humanStruct.Guid, humanStruct);
                }
                else
                {
                    ScenePlayerData playerdata = new ScenePlayerData();
                    playerdata.EnterData = humanStruct;
                    if (!mBackgroundPlayer.ContainsKey(playerdata.Guid))
                    {
                        mBackgroundPlayer.Add(playerdata.Guid, playerdata);
                    }
                    else
                    {
                        LogMgr.LogError("玩家已经在缓存中 guid:{0}", playerdata.Guid);
                    }                    
                }                
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_Monster)//怪物
            {
                MsgData_sSceneObjectEnterMonster monsterStruct = new MsgData_sSceneObjectEnterMonster();
                monsterStruct.unpack(buffer);
                if (CoreEntry.gCurrentMapDesc.Get<int>("type") == 31)   //幻灵副本 ,延时刷怪
                {
                    DungeonMgr.Instance.AddMonster(monsterStruct);
                }
                else
                {
                    CacheSceneObj(EnEntType.EnEntType_Monster, monsterStruct.Guid, monsterStruct);
                }
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_NPC)//NPC
            {
                MsgData_sSceneObjectEnterNPC npcStruct = new MsgData_sSceneObjectEnterNPC();
                npcStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_NPC, npcStruct.Guid, npcStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_Item)//物品
            {
                MsgData_sSceneObjectEnterItem itemStruct = new MsgData_sSceneObjectEnterItem();
                itemStruct.unpack(buffer);

                if (itemStruct.Owner == PlayerData.Instance.RoleID)
                {
                    CacheSceneObj(EnEntType.EnEntType_Item, itemStruct.Guid, itemStruct);

                    EventParameter ep = EventParameter.Get();
                    ep.intParameter = itemStruct.ConfigID;
                    ep.intParameter1 = itemStruct.Count;
                    ep.longParameter = itemStruct.Source;
                    CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_ITEM_DROP, ep);
                }                
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_GatherObj)
            {
                MsgData_sSceneObjectEnterCollection collectionStruct = new MsgData_sSceneObjectEnterCollection();
                collectionStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_GatherObj, collectionStruct.Guid, collectionStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_Trap)//陷阱
            {
                MsgData_sSceneObjectEnterTrap trapStruct = new MsgData_sSceneObjectEnterTrap();
                trapStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_Trap, trapStruct.Guid, trapStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_Pet)
            {
                MsgData_sSceneObjectEnterPet petStruct = new MsgData_sSceneObjectEnterPet();
                petStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_Pet, petStruct.Guid, petStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_BiaoChe)
            {
                MsgData_sSceneObjectEnterBiaoChe cheStruct = new MsgData_sSceneObjectEnterBiaoChe();
                cheStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_BiaoChe, cheStruct.Guid, cheStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EnEntType_StaticObj)//Portal
            {
                MsgData_sSceneObjectEnterStaticObj sstaticStruct = new MsgData_sSceneObjectEnterStaticObj();
                sstaticStruct.unpack(buffer);
                CacheSceneObj(EnEntType.EnEntType_StaticObj, sstaticStruct.Guid, sstaticStruct);
            }
            else if (CacheEnterHead.ObjType == (sbyte)EnEntType.EntType_VirtualPlayer)//EntType_VirtualPlayer
            {
                MsgData_sSceneObjectEnterVirtualPlayer sstaticStruct = new MsgData_sSceneObjectEnterVirtualPlayer();
                sstaticStruct.unpack(buffer);
                //Debug.LogError(sstaticStruct.Guid+"   " + sstaticStruct.HP+"  " +sstaticStruct.Level + "  "+sstaticStruct.Power+"  " +sstaticStruct.Wing);
                CacheSceneObj(EnEntType.EntType_VirtualPlayer, sstaticStruct.Guid, sstaticStruct);
            }


            //下方的游戏中还没用到,就不改了,减少被没必要的GC,以后需要可参照上方定义协议数据后使用
            //else if (baseStruct.ObjType == (sbyte)EnEntType.EnEntType_Patrol)
            //{
            //    PatrolEnterStruct patrolStruct = new PatrolEnterStruct();
            //    PacketUtil.Unpack<PatrolEnterStruct>(data.Data, out patrolStruct);
            //}
            //else if (baseStruct.ObjType == (sbyte)EnEntType.EnEntType_Duke)
            //{
            //    DukeEnterStruct dukeStruct = new DukeEnterStruct();
            //    PacketUtil.Unpack<DukeEnterStruct>(data.Data, out dukeStruct);
            //}

            //else if (baseStruct.ObjType == (sbyte)EnEntType.EnEntType_BiaoChe)
            //{
            //    BiaoCheEnterStruct biaocheStruct = new BiaoCheEnterStruct();
            //    PacketUtil.Unpack<BiaoCheEnterStruct>(data.Data, out biaocheStruct);
            //}
        }
Esempio n. 29
0
        //播放动画,特效,声音
        IEnumerator PlayActionEfxSound(SkillPlayParam param, float delayTime)
        {
            if (m_actor == null)
            {
                yield  break;
            }
            m_strActionName = param.action;
            if (m_strActionName != null && m_strActionName.Length > 0)
            {
                //动作带位移 的 不能延迟播放,  延迟播放将影响 位移曲线计算
                m_actor.PlayAction(m_strActionName, false);
                m_actor.SetActionTime(m_strActionName, param.startTime);
                m_actor.SetSkillActionSpeed(m_strActionName, param.speed, m_skillDesc);
            }

            //其它玩家不播放了
            if (m_actor.mActorType == ActorType.AT_REMOTE_PLAYER)
            {
                yield break;
            }

            if (m_actor.mActorType == ActorType.AT_PET)
            {
                PetObj pet = m_actor as PetObj;
                if (null != pet && pet.m_MasterActor != CoreEntry.gActorMgr.MainPlayer)
                {
                    yield break;
                }
            }

            //播放声音
            string sound1 = param.sound;
            string sound2 = param.voice;

            if (sound1 != null && sound1.Length > 0)
            {
                m_actor.StopSound();
                m_actor.PlaySound(sound1);
            }

            if (sound2 != null && sound2.Length > 0)
            {
                m_actor.StopSound2();
                m_actor.PlaySound2(sound2);
            }

            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(m_skillID);

            if (skill_action == null)
            {
                Debug.LogError("==skill_action == is null m_skillID = " + m_skillID);
                yield break;
            }
            Vector3 efxPos   = m_actor.transform.position;
            bool    isBind   = skill_action.Get <bool>("isBind");
            int     bindType = skill_action.Get <int>("skillEfxPos");

            if (!isBind)
            {
                if (bindType == 1)
                {
                    ActorObj target = m_actor.GetSelTarget();
                    if (null != target)
                    {
                        efxPos = target.transform.position;
                    }
                }
            }

            if (delayTime > 0.0001f)
            {
                yield return(new WaitForSeconds(delayTime));
            }

            //if (ByteToString.toString(m_skillDesc.szAttackEfxPrefab).Length > 0)
            if (param.actionEfx != null && param.actionEfx.Length > 0)
            {
                if (/*m_skillDesc.skilltype == 0 && */ m_actor.mActorType == ActorType.AT_BOSS)
                {
                    yield return(new WaitForSeconds(m_actor.NoramalAttackEffectDelayTime));
                }
                if (skill_action != null)
                {
                    param.actionEfx = skill_action.Get <string>("skilleffect");
                    //efxObj = Instantiate(CoreEntry.gResLoader.LoadResource(param.actionEfx)) as GameObject;//CoreEntry.gGameObjPoolMgr.InstantiateEffect(param.actionEfx);
                    efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(param.actionEfx);
                    if (efxObj == null)
                    {
                        LogMgr.LogError("找不到attackEfxPrefab:" + skill_action.Get <string>("skilleffect") + " " + m_skillDesc.Get <string>("name"));
                    }
                }

                float maxEfxTime = 0;
                if (skill_action.Get <float>("skillEfxLength") > 0)
                {
                    maxEfxTime = skill_action.Get <float>("skillEfxLength");
                }


                //LogMgr.UnityLog("maxEfxTime=" + maxEfxTime + ", " + m_strActionName);

                //特效存在时间
                if (maxEfxTime <= 0.001)
                {
                    maxEfxTime = m_actor.GetActionLength(m_strActionName);

                    if (maxEfxTime <= 0.001)
                    {
                        LogMgr.UnityError("技能 动作时间 没有配置 skillID:" + m_skillDesc.Get <int>("id"));
                    }
                }


                bool isFollowMove       = false;
                EfxAttachActionPool efx = efxObj.GetComponent <EfxAttachActionPool>();
                if (efx == null)
                {
                    efx = efxObj.AddComponent <EfxAttachActionPool>();
                }

                if (efx != null)
                {
                    efx.Init(m_actor.transform, maxEfxTime, isFollowMove);

                    m_actionEfx = efx;

                    if (isBind)
                    {
                        ActorObj bindActor = null;
                        if (bindType == 0)
                        {
                            bindActor = m_actor;
                        }
                        else
                        {
                            bindActor = m_actor.GetSelTarget();
                        }

                        Transform bindTran = null;
                        if (null != bindActor)
                        {
                            string hangPoint = skill_action.Get <string>("hangPoint");
                            if (!string.IsNullOrEmpty(hangPoint))
                            {
                                bindTran = bindActor.transform.FindChild(hangPoint);
                            }
                            if (null == bindTran)
                            {
                                bindTran = bindActor.transform;
                            }
                        }
                        else
                        {
                            bindTran = m_actor.transform;
                        }

                        m_actionEfx.transform.parent        = bindTran;
                        m_actionEfx.transform.localPosition = Vector3.zero;
                        m_actionEfx.transform.localScale    = Vector3.one;
                        m_actionEfx.transform.rotation      = m_actor.transform.rotation;
                    }
                    else
                    {
                        if (bindType == 1)
                        {
                            m_actionEfx.transform.position = efxPos;
                        }
                        else
                        {
                            m_actionEfx.transform.position = m_actor.transform.position;
                        }
                        m_actionEfx.transform.localScale = Vector3.one;
                        m_actionEfx.transform.rotation   = m_actor.transform.rotation;
                    }

                    //设置有挂点的特效
                    Transform[] childTransform = efxObj.GetComponentsInChildren <Transform>();
                    //foreach (Transform childTrans in childTransform)
                    for (int i = 0; i < childTransform.Length; ++i)
                    {
                        Transform         childTrans = childTransform[i];
                        EfxSetAttachPoint setAttach  = childTrans.gameObject.GetComponent <EfxSetAttachPoint>();
                        if (setAttach == null || setAttach.m_attachPointEnum == AttachPoint.E_None)
                        {
                            continue;
                        }

                        setAttach.Init(false);

                        Transform parent = m_actor.GetChildTransform(setAttach.m_attachPointEnum.ToString());
                        if (parent != null)
                        {
                            childTrans.parent        = parent;
                            childTrans.localPosition = Vector3.zero;
                            childTrans.localRotation = Quaternion.identity;
                            childTrans.localScale    = Vector3.one;

                            m_attachEfxObjectlist.Add(childTrans.gameObject);
                        }
                    }

                    //影子
                    ghostMesh[] ghostMesh = efx.GetComponentsInChildren <ghostMesh>();

                    if (ghostMesh.Length > 0)
                    {
                        SkinnedMeshRenderer MianSkinMesh = m_actor.m_skinnedMeshRenderer[0];
                        for (int i = 0; i < m_actor.m_skinnedMeshRenderer.Length; ++i)
                        {
                            if (m_actor.m_skinnedMeshRenderer[i].name.Contains("weapon"))
                            {
                                continue;
                            }
                            MianSkinMesh = m_actor.m_skinnedMeshRenderer[i];
                        }

                        for (int i = 0; i < ghostMesh.Length; ++i)
                        {
                            ghostMesh[i].characterMesh[0] = MianSkinMesh;
                        }
                    }
                }
            }

            yield return(1);
        }
Esempio n. 30
0
        public void Preload(ActorObj own, int skillID)
        {
            m_skillID            = skillID;
            m_onlyShowSkillScope = true;
            m_actor     = own;
            m_skillDesc = ConfigManager.Instance.Skill.GetSkillConfig(m_skillID);
            if (m_skillDesc == null)
            {
                return;
            }

            SkillClassDisplayDesc skillClass = m_gameDBMgr.GetSkillClassDisplayDesc(m_skillDesc.Get <int>("skillDisplayID"));

            if (skillClass == null)
            {
                return;
            }

            //吟唱阶段
            for (int i = 0; i < skillClass.prepareStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.prepareStageDataList[i].prefabPath);
                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.prepareStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            //技能元素
            for (int i = 0; i < skillClass.castStageDataList.Count; ++i)
            {
                GameObject cellObj = CoreEntry.gGameObjPoolMgr.InstantiateSkillCell(skillClass.castStageDataList[i].prefabPath);
                if (cellObj == null)
                {
                    LogMgr.UnityError("Can not found prefab: " + skillClass.castStageDataList[i].prefabPath + " ! of skillID " + skillClass.skillID + " : " + skillClass.castStageDataList[i].ToString());
                    continue;
                }

                cellObj.transform.parent = transform;

                ISkillCell skillCell = cellObj.GetComponent <ISkillCell>();
                skillCell.Preload(skillClass.castStageDataList[i], this);
                AddSkillCell(cellObj);
            }

            // 动作特效加载
            LuaTable skill_action = CoreEntry.gSkillMgr.GetSkillActon(skillID);

            if (skill_action != null && skill_action.Get <string>("skilleffect").Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(skill_action.Get <string>("skilleffect"));
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
                else
                {
                    LogMgr.LogError("can not find attackEfxPrefab path: " + skill_action.Get <string>("skilleffect"));
                }
            }

            // 受击特效加载
            string pfx_hurt = m_skillDesc.Get <string>("pfx_hurt");

            if (pfx_hurt.Length > 0)
            {
                GameObject efxObj = CoreEntry.gGameObjPoolMgr.InstantiateEffect(pfx_hurt);
                if (efxObj != null)
                {
                    CoreEntry.gGameObjPoolMgr.Destroy(efxObj);
                }
            }

            DestroyEfx();
        }