Files
PrinceOfGlory/Assets/Scripts/Leave/LeavePlayPrefabControll.cs
kridoo 6e91a0c7f0 111
2025-09-15 17:32:08 +08:00

91 lines
3.6 KiB
C#

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<Vector3>(GameEvent.EventShowLeavePlayByPosition, GameDataManage_EventShowLeavePlayByPosition);
GlobalEventMgr.Listen<int>(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;
}
}