public void Update() { if (mIsEnabled == false) { return; } Camera cam = Game.Instance.MainCamera; if (cam != null) { mNeatRect = cam.pixelRect; mNeatRect.xMin -= 65f; mNeatRect.xMax += 65f; mNeatRect.yMin -= 65f; mNeatRect.yMax += 65f; //目前只处理NPC if (mIsEnableNpcModelCull == true) { using (var enumerator = NpcManager.Instance.AllNpc.GetEnumerator()) { while (enumerator.MoveNext()) { var actorMono = enumerator.Current.Value; NpcPlayer npcPlayer = actorMono.BindActor as NpcPlayer; if (npcPlayer != null) { Vector3 pos = cam.WorldToScreenPoint(actorMono.transform.position); // 在屏幕范围内 if (mNeatRect.Contains(pos)) { // 离主角一定距离外需要隐藏,主角骑上坐骑的一瞬间位置是0,所以要排除主角位置是0的情况 Actor localPlayer = Game.Instance.GetLocalPlayer(); if (localPlayer != null && localPlayer.ActorTrans.position.Equals(Vector3.zero) == false && (npcPlayer.ActorTrans.position - localPlayer.ActorTrans.position).sqrMagnitude >= mNpcMaxVisibleDistanceSquare) { npcPlayer.mAvatarCtrl.UnloadModel(); npcPlayer.GetBehavior <ShadowBehavior>().HideFakeShadow = true; npcPlayer.ShowTextName(false); } else { npcPlayer.mAvatarCtrl.ReloadModel(); npcPlayer.GetBehavior <ShadowBehavior>().HideFakeShadow = false; npcPlayer.ShowTextName(true); } } else { npcPlayer.mAvatarCtrl.UnloadModel(); npcPlayer.ShowTextName(false); } } } } } } }