From 252d46b8642ad4ecebe1a8b9d3a0678913413ebf Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 14 十一月 2018 15:30:58 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
Fight/GameActor/GActorNpcFight.cs | 305 +++++++++++++++++++++++++-------------------------
1 files changed, 151 insertions(+), 154 deletions(-)
diff --git a/Fight/GameActor/GActorNpcFight.cs b/Fight/GameActor/GActorNpcFight.cs
index 814cb94..f79510d 100644
--- a/Fight/GameActor/GActorNpcFight.cs
+++ b/Fight/GameActor/GActorNpcFight.cs
@@ -10,7 +10,7 @@
protected DialogueBubble m_DialogAppear;
protected DialogueBubble m_DialogTiming;
protected float m_LastTalkTime;
- public NPCConfig NpcConfig { get; private set; }
+ public NPCConfig NpcConfig { get; protected set; }
private SFXController m_AppearEffect;
private bool m_LoadDefaultRes = false;
@@ -50,11 +50,29 @@
}
}
- public void Init(uint serverInstID, uint clientInstID, uint npcID, E_ActorGroup group, GameNetPackBasic package)
+ protected override void OnInit(GameNetPackBasic package)
{
+ base.OnInit(package);
+
m_LoadDefaultRes = false;
- NpcConfig = Config.Instance.Get<NPCConfig>((int)npcID);
+ var _package = package as H0406_tagNPCAppear;
+ if (_package != null)
+ {
+ NpcConfig = Config.Instance.Get<NPCConfig>((int)_package.NPCID);
+ }
+ else
+ {
+ var _package2 = package as H0408_tagPlayerSummonNPCAppear;
+ if (_package2 != null)
+ {
+ NpcConfig = Config.Instance.Get<NPCConfig>((int)_package2.NPCID);
+ }
+ else
+ {
+ return;
+ }
+ }
if (NpcConfig == null)
{
@@ -63,143 +81,12 @@
}
ActorType = GameObjType.gotNPC;
-
- // 鍒濆鍖栬〃鐜板眰
- GameObject _prefab = InstanceResourcesLoader.LoadNpcPrefab(NpcConfig.NPCID);
-
- if (_prefab == null)
- {
- if (this is GA_Pet)
- {
- _prefab = InstanceResourcesLoader.LoadDefaultPet();
- }
- else
- {
- _prefab = InstanceResourcesLoader.LoadDefaultFightNPC();
- }
-
- if (_prefab)
- {
- m_LoadDefaultRes = true;
- }
- }
-
- if (_prefab)
- {
- if (PreFightMission.Instance.IsFinished())
- {
- GAMgr.Instance.AddNeedDestroyPrefab(_prefab);
- }
-
- if (m_LoadDefaultRes)
- {
- if (this is GA_Pet)
- {
- m_Model = GameObjectPoolManager.Instance.RequestDefaultPet();
- }
- else
- {
- m_Model = GameObjectPoolManager.Instance.RequestDefaultFightNpc();
- }
- }
- else
- {
- m_Model = GameObjectPoolManager.Instance.RequestNpcGameObject(NpcConfig.NPCID);
- }
-
- if (m_Model)
- {
- SkinnedMeshRenderer _renderer = m_Model.GetComponentInChildren<SkinnedMeshRenderer>();
- if (_renderer)
- {
- _renderer.gameObject.layer = LayerUtility.Monster;
- m_Material = _renderer.material;
- }
-
- m_Animator = m_Model.GetComponent<Animator>();
- if (!m_Animator)
- {
- if (m_Model.transform.childCount > 0)
- {
- m_Animator = m_Model.transform.GetChild(0).GetComponent<Animator>();
- }
- }
-
- if (m_Animator)
- {
- RuntimeAnimatorController _controller = null;
- if (m_LoadDefaultRes)
- {
- if (this is GA_Pet)
- {
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Pet();
- }
- else
- {
- _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
- }
- }
- else
- {
- _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NpcConfig.MODE);
-
- }
-
- if (_controller)
- {
- m_Animator.runtimeAnimatorController = _controller;
- }
-
- m_Animator.enabled = true;
-
- if (m_Animator.parameterCount > 0)
- {
- m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)clientInstID);
- }
- IdleImmediate();
- }
-
- SetupBindNode(m_Model.transform);
-
- }
- }
-
- // 鎵ц鐖剁被鐨勫垵濮嬪寲
- Init(serverInstID, clientInstID, group, package);
-
- if (m_Model)
- {
- m_Model.transform.SetParent(m_Root.transform);
- m_Model.transform.localPosition = Vector3.zero;
- m_Model.transform.localRotation = Quaternion.identity;
-
- bool _playEffect = true;
-
- uint _parentSID = ActorInfo.ownerSID;
- if (_parentSID != PlayerDatas.Instance.PlayerId)
- {
- GA_Player _player = GAMgr.Instance.GetBySID(_parentSID) as GA_Player;
- if (_player != null)
- {
- _playEffect = _player.ShowOrHide;
- }
- }
-
- if (_playEffect)
- {
- if (NpcConfig.NPCEffect != 0)
- {
- m_AppearEffect = SFXPlayUtility.Instance.PlayBattleEffect(NpcConfig.NPCEffect, this);
- EffectConfig _effectConfig = Config.Instance.Get<EffectConfig>(NpcConfig.NPCEffect);
- if (_effectConfig != null)
- {
- SoundPlayer.Instance.PlayAudio(m_AudioSource, _effectConfig.audio);
- }
- }
- }
- }
-
Root.gameObject.layer = LayerUtility.Monster;
+
+ if (NpcConfig.ModeProportion != 1)
+ {
+ Root.localScale = Vector3.one * NpcConfig.ModeProportion;
+ }
if (CanBeSelected())
{
@@ -209,34 +96,87 @@
_collider.height = NpcConfig.ModleHeight;
}
- // 褰卞瓙涓嶄緷璧栦簬琛ㄧ幇灞�
RequestShadow();
- if (NpcConfig.ModeProportion != 1)
- {
- Root.localScale = Vector3.one * NpcConfig.ModeProportion;
- }
+ InstanceResourcesLoader.AsyncLoadNpc(NpcConfig.NPCID, OnPrefabLoadFinished);
+ }
- RequestDialogueBubble();
-
- GAStaticDefine.NPCLocation _npcLocation;
- if (GAStaticDefine.TryGetMapNPCLocation(NpcConfig.NPCID, out _npcLocation))
+ private void OnPrefabLoadFinished(bool result, UnityEngine.Object prefab)
+ {
+ if (!result || prefab == null)
{
- if (_npcLocation.face != 0)
+ if (!m_LoadDefaultRes)
{
- Rotation = MathUtility.GetClientRotationFromAngle(_npcLocation.face);
+ InstanceResourcesLoader.AsyncLoadDefaultFuncNpc(OnPrefabLoadFinished);
+
+ if (this is GA_Pet)
+ {
+ InstanceResourcesLoader.AsyncLoadDefaultPet(OnPrefabLoadFinished);
+ }
+ else
+ {
+ InstanceResourcesLoader.AsyncLoadDefaultFightNpc(OnPrefabLoadFinished);
+ }
+
+ m_LoadDefaultRes = true;
}
else
{
- Rotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
+ m_LoadDefaultRes = false;
+ Debug.LogErrorFormat("鍔犺浇Npc妯″瀷璧勬簮鍑洪敊: {0}", NpcConfig.NPCID);
+ }
+ return;
+ }
+
+ GAMgr.Instance.AddNeedDestroyPrefab(prefab as GameObject);
+
+ if (m_LoadDefaultRes)
+ {
+ if (this is GA_Pet)
+ {
+ m_Model = GameObjectPoolManager.Instance.RequestDefaultPet();
+ }
+ else
+ {
+ m_Model = GameObjectPoolManager.Instance.RequestDefaultFightNpc();
}
}
else
{
- Rotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
+ m_Model = GameObjectPoolManager.Instance.RequestGameObject(prefab as GameObject);
}
- OnAfterInit();
+ if (!m_Model)
+ {
+ return;
+ }
+
+ OnMainModelLoaded();
+
+ bool _playEffect = true;
+
+ uint _parentSID = ActorInfo.ownerSID;
+ if (_parentSID != PlayerDatas.Instance.PlayerId)
+ {
+ GA_Player _player = GAMgr.Instance.GetBySID(_parentSID) as GA_Player;
+ if (_player != null)
+ {
+ _playEffect = _player.ShowOrHide;
+ }
+ }
+
+ if (_playEffect)
+ {
+ if (NpcConfig.NPCEffect != 0)
+ {
+ m_AppearEffect = SFXPlayUtility.Instance.PlayBattleEffect(NpcConfig.NPCEffect, this);
+ EffectConfig _effectConfig = Config.Instance.Get<EffectConfig>(NpcConfig.NPCEffect);
+ if (_effectConfig != null)
+ {
+ SoundPlayer.Instance.PlayAudio(m_AudioSource, _effectConfig.audio);
+ }
+ }
+ }
}
protected override void OnUnit()
@@ -555,7 +495,64 @@
public abstract void OnUnSelect();
public abstract void OnClick();
- protected virtual void OnAfterInit() { }
+ protected virtual void OnMainModelLoaded()
+ {
+ SkinnedMeshRenderer _renderer = m_Model.GetComponentInChildren<SkinnedMeshRenderer>();
+ if (_renderer)
+ {
+ _renderer.gameObject.layer = LayerUtility.Monster;
+ m_Material = _renderer.material;
+ }
+
+ m_Animator = m_Model.GetComponent<Animator>();
+ if (!m_Animator)
+ {
+ if (m_Model.transform.childCount > 0)
+ {
+ m_Animator = m_Model.transform.GetChild(0).GetComponent<Animator>();
+ }
+ }
+
+ if (m_Animator)
+ {
+ RuntimeAnimatorController _controller = null;
+ if (m_LoadDefaultRes)
+ {
+ if (this is GA_Pet)
+ {
+ _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Pet();
+ }
+ else
+ {
+ _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
+ }
+ }
+ else
+ {
+ _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NpcConfig.MODE);
+
+ }
+
+ if (_controller)
+ {
+ m_Animator.runtimeAnimatorController = _controller;
+ }
+
+ m_Animator.enabled = true;
+
+ if (m_Animator.parameterCount > 0)
+ {
+ m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)ClientInstID);
+ }
+ IdleImmediate();
+ }
+
+ SetupBindNode(m_Model.transform);
+
+ m_Model.transform.SetParent(m_Root.transform);
+ m_Model.transform.localPosition = Vector3.zero;
+ m_Model.transform.localRotation = Quaternion.identity;
+ }
/// <summary>
/// 鏄剧ず鎴栬�呴殣钘忚〃鐜板眰
--
Gitblit v1.8.0