91 lines
3.6 KiB
C#
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;
|
|
}
|
|
}
|