//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, October 12, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class UI3DTreasureExhibition : MonoBehaviour { const string EFFECT_BONE = "Bone_effect"; [SerializeField] Transform m_ShowPoint; [SerializeField] Camera m_ShowCamera; int m_TreasureId = 0; GameObject treasureModel = null; SFXController effect; GameObject weaponModel = null; int m_GodWeaponType = 0; static UI3DTreasureExhibition m_Instance = null; public static UI3DTreasureExhibition Instance { get { if (m_Instance == null) { var gameObject = Instantiate(Resources.Load("UI/Prefabs/UI3DTreasureExhibitionStage")); m_Instance = gameObject.GetComponent(); Instance.transform.position = new Vector3(0, 2000, 3000); m_Instance.name = "UI3DTreasureExhibitionStage"; m_Instance.gameObject.SetActive(true); m_Instance.m_ShowCamera.enabled = false; DontDestroyOnLoad(gameObject); } return m_Instance; } } public void BeginShowTreasure(int _treasureId, RawImage _rawImage) { var instance = UI3DModelFactory.LoadUITreasure(_treasureId); if (instance == null) { return; } StopShow(); m_ShowCamera.enabled = true; m_TreasureId = _treasureId; treasureModel = instance; instance.transform.SetParentEx(m_ShowPoint, Vector3.zero, Quaternion.identity, Vector3.one); instance.SetActive(true); var config = ConfigManager.Instance.GetTemplate(_treasureId); var mountPoint = treasureModel.transform.GetChildTransformDeeply(EFFECT_BONE); if (mountPoint == null) { mountPoint = treasureModel.transform; } effect = SFXPlayUtility.Instance.Play(config.EffectID, mountPoint); if (effect != null) { LayerUtility.SetLayer(effect.gameObject, LayerUtility.UILayer, true); } if (_rawImage != null) { _rawImage.texture = m_ShowCamera.targetTexture; _rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial(); } } public void BeginShowGodWeapon(int _type, RawImage _rawImage) { var instance = UI3DModelFactory.LoadUIGodWeapon(_type); if (instance == null) { return; } StopShow(); m_ShowCamera.enabled = true; m_GodWeaponType = _type; weaponModel = instance; instance.transform.SetParentEx(m_ShowPoint, Vector3.zero, Quaternion.identity, Vector3.one); instance.SetActive(true); if (_rawImage != null) { _rawImage.texture = m_ShowCamera.targetTexture; _rawImage.material = MaterialUtility.GetGUIRenderTextureMaterial(); } } public void StopShow() { m_ShowCamera.enabled = false; if (effect != null) { SFXPlayUtility.Instance.Release(effect); effect = null; } if (weaponModel != null) { UI3DModelFactory.ReleaseUIGodWeapon(m_GodWeaponType, weaponModel); weaponModel = null; m_GodWeaponType = 0; } if (treasureModel != null) { UI3DModelFactory.ReleaseUITreasure(m_TreasureId, treasureModel); treasureModel = null; m_TreasureId = 0; } } private void Awake() { OnQualityChange(); SystemSetting.Instance.qualityLevelChangeEvent += OnQualityChange; } private void OnDestroy() { SystemSetting.Instance.qualityLevelChangeEvent -= OnQualityChange; } private void OnQualityChange() { } } }