using Snxxz.UI; using UnityEngine; public class GA_NpcTouchKilled : GActorNpcNoFight { private bool m_Touched = false; private HeadUpName m_HeadUpName; // 用于触发点击的组件 private H0406_tagNPCAppear m_H0406; protected override void OnInit(GameNetPackBasic package) { m_H0406 = package as H0406_tagNPCAppear; if (m_H0406 == null) { Debug.LogErrorFormat("Npc 执行初始化时, 传入的包错误...{0}", package.GetType()); } m_Touched = false; // 初始化坐标 AdjustPos(m_H0406.PosX, m_H0406.PosY); // 功能NPC需要读取配置朝向 GAStaticDefine.NPCLocation _npcLocation; if (GAStaticDefine.TryGetMapNPCLocation(NpcConfig.NPCID, out _npcLocation)) { Rotation = MathUtility.GetClientRotationFromAngle(_npcLocation.face); } else { Rotation = Quaternion.Euler(0, UnityEngine.Random.Range(0, 360), 0); } GAStaticDefine.NpcID2ServerInstID[NpcConfig.NPCID] = ServerInstID; } protected override void OnUnit() { m_H0406 = null; ReleaseName(); base.OnUnit(); } protected sealed override void OnLateUpdate() { } protected sealed override void OnFixedUpdate() { if (!m_Touched) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null) { float _distSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, Pos); if (_distSqrt < 1f) { CA224_tagCMTouchNPC _proto = new CA224_tagCMTouchNPC { ObjID = ServerInstID }; GameNetSystem.Instance.SendInfo(_proto); m_Touched = true; } } } } protected sealed override void OnUpdate() { } public sealed override void Die() { } public sealed override void Hurt() { } public sealed override void HurtDown() { } public sealed override void RequestLifeBar() { } public sealed override void ReleaseLifeBar() { } public sealed override void RequestName() { ReleaseName(); HeadUpName.Pattern _pattern = HeadUpName.Pattern.FunctionNPC; m_HeadUpName = HeadUpName.RequireHeadUpName(_pattern, MP_Name, 0, CameraController.Instance.CameraObject); m_HeadUpName.SetNPCName(NpcConfig.charName); } public sealed override void ReleaseName() { if (m_HeadUpName) { m_HeadUpName.target = null; HeadUpName.Recycle(m_HeadUpName); m_HeadUpName = null; } } public sealed override void OnSelect() { } public sealed override void OnUnSelect() { } public sealed override bool CanBeSelected() { return false; } public sealed override void OnClick() { throw new System.NotImplementedException(); } }