using HighlightPlus; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.SocialPlatforms; public enum SorghumState { Diseased,//病株成熟 Healthy,//健康成熟 } public enum SorghumPeriod { Mature,//成熟 Seedling//幼苗 } public class SorghumController : PermanentTriggerBase { public GameObject Diseased_Mature;//病株成熟 public GameObject Healthy_Mature;//健康成熟 public GameObject Diseased_Seedling;//病株成熟 public GameObject Healthy_Seedling;//健康幼苗 public SorghumState State = SorghumState.Healthy; public SorghumPeriod Period = SorghumPeriod.Mature; public bool RandomRotate = true; //LODGroup lodGroup = null; public void Init(SorghumState _state = SorghumState.Healthy, SorghumPeriod _period = SorghumPeriod.Mature, bool _rand = false) { State = _state; Period = _period; //DiseasedStrain.SetActive(State == SorghumState.Diseased); //HealthyStrain.SetActive(State == SorghumState.Healthy); Diseased_Mature.SetActive(State == SorghumState.Diseased && Period == SorghumPeriod.Mature);//病株成熟 Healthy_Mature.SetActive(State == SorghumState.Healthy && Period == SorghumPeriod.Mature); //健康成熟 Diseased_Seedling.SetActive(State == SorghumState.Diseased && Period == SorghumPeriod.Seedling);//病株成熟 Healthy_Seedling.SetActive(State == SorghumState.Healthy && Period == SorghumPeriod.Seedling); //健康幼苗 RandomRotate = _rand; if (RandomRotate) { // 获取当前旋转角度 Vector3 currentRotation = transform.eulerAngles; // 设置Y轴为随机角度(0到360度) currentRotation.y = Random.Range(0f, 360f); // 应用新的旋转角度 transform.eulerAngles = currentRotation; } switch (State) { case SorghumState.Diseased: triggerName = "高粱_病株"; this.gameObject.name = "高粱_病株"; //lodGroup = DiseasedStrain.GetComponent(); break; case SorghumState.Healthy: triggerName = "高粱_正常"; this.gameObject.name = "高粱_正常"; break; } switch (Period) { //lodGroup = HealthyStrain.GetComponent(); case SorghumPeriod.Seedling: triggerName += "幼苗"; this.gameObject.name += "幼苗"; break; case SorghumPeriod.Mature: triggerName += "成熟"; this.gameObject.name += "成熟"; break; } } public GameObject GetCurrentSorghum() { if (Period == SorghumPeriod.Mature) { if (State == SorghumState.Diseased) return Diseased_Mature; else return Healthy_Mature; } else { if (State == SorghumState.Diseased) return Diseased_Seedling; else return Healthy_Seedling; } } protected override void OnMDown() { RangeFinding rf = OfficeManager.Instance.gameObject.GetComponent(); if (rf != null && rf.enabled) { return; } GameObject targetObj = GameObject.Find("Split_Obj"); GameObject targetHD_M = targetObj.transform.GetChild(0).gameObject; GameObject targetSC_M = targetObj.transform.GetChild(1).gameObject; GameObject targetHD_S = targetObj.transform.GetChild(2).gameObject; GameObject targetSC_S = targetObj.transform.GetChild(3).gameObject; GameObject SplitCamera = GameObject.Find("SplitCamera"); foreach (Transform item in SplitCamera.transform) { item.gameObject.SetActive(true); } targetHD_M.SetActive(false); targetHD_S.SetActive(false); targetSC_M.SetActive(false); targetSC_S.SetActive(false); if (State == SorghumState.Diseased) { if (Period == SorghumPeriod.Seedling) targetHD_S.SetActive(true); else targetHD_M.SetActive(true); GameManager.UIMgr.ShowPanel(E_UI_Layer.Top); GameManager.UIMgr.ShowPanel(E_UI_Layer.Top, (p) => { p.Init(); }); } else { if (Period == SorghumPeriod.Seedling) targetSC_S.SetActive(true); else targetSC_M.SetActive(true); GameManager.UIMgr.ShowPanel(E_UI_Layer.Top); GameManager.UIMgr.ShowPanel(E_UI_Layer.Top, (p) => { p.Init(); }); } } protected override void OnMEnter() { base.OnMEnter(); //if (GameManager.RunModelMgr?.ModeType != E_ModeType.Study) //{ //_highlight = GetComponentInChildren(); if (_highlight != null) _highlight.SetHighlighted(true); //Debug.Log("当前渲染:" + GetLODCurShowLevel(Camera.main, lodGroup)); //} } protected override void OnMExit() { if (_highlight != null) _highlight.SetHighlighted(false); base.OnMExit(); } protected override void OnAwake() { base.OnAwake(); } }