using System.Collections; using System.Collections.Generic; using UnityEngine; using BigSpace.Logic; using BigSpace.XRCore.Event; public class LeavePlayPrefabControll : MonoBehaviour { public GameObject leavePrefab; public GameObject boxCollider; //public GameObject block; // Start is called before the first frame update void Start() { DontDestroyOnLoad(gameObject); GlobalEventMgr.Listen(GameEvent.EventShowLeavePlayByPosition, GameDataManage_EventShowLeavePlayByPosition); GlobalEventMgr.Listen(GameEvent.EventShowCheckLeavePlay, GameDataManage_EventShowCheckLeavePlay); GlobalEventMgr.Listen(GameEvent.EventHideLeavePlay, GameDataManage_EventHideLeavePlay); } private void GameDataManage_EventShowLeavePlayByPosition(Vector3 v3) { Debug.Log("自己离开出界位置:" + v3); //string index = boxName.Replace("LeaveBoxCollider_", ""); GameDataManage.Instance.isShowLeaveOn = true; RenderSettings.fog = false; GameObject gameScene = GameObject.Find("GameScene"); gameScene.transform.Find("Static").gameObject.SetActive(false); gameScene.transform.Find("Dynamic").gameObject.SetActive(false); GameObject gameEnvi = GameObject.Find("GameScene/Environment/SkyBox_360Player"); SetGameObjectLayer(gameEnvi, false); leavePrefab.transform.position = new Vector3(v3.x, 0, v3.z); leavePrefab.SetActive(true); boxCollider.transform.localScale = new Vector3(1,1,1.5f); //block.SetActive(true); } //主动检测出界 private void GameDataManage_EventShowCheckLeavePlay(int index) { Debug.Log("显示的位置:" + index); GameDataManage.Instance.isShowLeaveOn = true; RenderSettings.fog = false; GameObject gameScene = GameObject.Find("GameScene"); gameScene.transform.Find("Static").gameObject.SetActive(false); gameScene.transform.Find("Dynamic").gameObject.SetActive(false); GameObject SkyBox = GameObject.Find("GameScene/Environment/SkyBox_360Player"); SetGameObjectLayer(SkyBox, false);//修改天空球显示层级为Invisible GameObject tagObj = GameObject.Find("LeaveBoxCollider_" + index+ "/StartPosition"); leavePrefab.transform.position = new Vector3(tagObj.transform.position.x, 0, tagObj.transform.position.z); leavePrefab.SetActive(true); boxCollider.transform.localScale = new Vector3(1, 1, 1.5f); //block.SetActive(true); } private void GameDataManage_EventHideLeavePlay() { Debug.Log("到位置了还原回来"); GameDataManage.Instance.isShowLeaveOn = false; RenderSettings.fog = true; GameObject gameScene = GameObject.Find("GameScene"); if (GameDataManage.Instance.isNeedShowAnyBuyOffline) { gameScene.transform.Find("Static").gameObject.SetActive(true); gameScene.transform.Find("Dynamic").gameObject.SetActive(true); } GameObject SkyBox = GameObject.Find("GameScene/Environment/SkyBox_360Player"); SetGameObjectLayer(SkyBox, true);//恢复天空球显示层级为Default leavePrefab.SetActive(false); //block.SetActive(false); GlobalEventMgr.Dispatch(GameEvent.EventHideLevelPlay); GlobalEventMgr.Dispatch(GameEvent.EventSetPAFreame, false); } //修改GameObject的Layer 需要相机设置关闭Invisible层级显示 private void SetGameObjectLayer(GameObject go, bool isShow) { if (go == null) return; int layer = LayerMask.NameToLayer("Skybox"); if (!isShow) { layer = LayerMask.NameToLayer("Invisible"); } go.layer = layer; } }