using DG.Tweening; using UniRx; using UnityEngine; using UnityEngine.UI; public class PlanController : MonoBehaviour { public Toggle PlanToggle; public Button NewButton; public Button DeleteButton; // Start is called before the first frame update void Start() { PlanToggle.onValueChanged.AddListener((bool value) => PlanToggleValueChanged(value)); NewButton.OnClickAsObservable() .Subscribe(_ => NewNode()).AddTo(gameObject); DeleteButton.OnClickAsObservable() .Subscribe(_ => MessageBox.Show("确认删除?",Color.white, DeletePlan)).AddTo(gameObject); } private void NewNode() { PlanToggle.isOn = true; UIManager.Instance.Show(); PowerManager.Instance.PlanMode = DisposalPlanMode.节点; PowerManager.Instance.NodeParent = transform; PowerManager.Instance.PlanName = name; PowerManager.Instance.planController = this; } private void PlanToggleValueChanged(bool value) { if (value) { PowerManager.Instance.NodeParent = transform; PowerManager.Instance.PlanName = name; PowerManager.Instance.planController = this; PlanToggle.transform.Find("Background").localEulerAngles = new Vector3(0,0,90); Plans(); } else { PlanToggle.transform.Find("Background").localEulerAngles = new Vector3(0, 0, 180); foreach (Transform obj in transform) { if (obj.name != "Subtitles") Destroy(obj.gameObject); } PowerManager.Instance.ClearAll(); } } private void Plans() { var plan =UIManager.Instance.GetView().Plans.Find(a => a.Name == name); foreach(var item in plan.Nodes) { string id = item.Name; GameObject go = Instantiate(UIManager.Instance.GetView().NodeItem) as GameObject; go.SetActive(true); go.name = id; go.transform.SetParent(transform, false); go.transform.Find("Load/Label").GetComponent().text = id; LoadImage(go); } } void LoadImage(GameObject go) { var plan = UIManager.Instance.GetView().Plans.Find(a => a.Name == name); var node = plan.Nodes.Find(n => n.Name == go.name); HttpManager.Instance.GetFile(node.Id, actionResult => { Debug.Log(actionResult.ImageUrl); if (!string.IsNullOrEmpty(actionResult.ImageUrl)) HttpManager.Instance.GetImage($"{ actionResult.ImageUrl}?x-oss-process=image/resize,h_64", texture => { var sp = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); go.transform.Find("ImageButton").GetComponent().sprite = sp; }); go.GetComponent().ImageUrl = actionResult.ImageUrl; }); } private void DeletePlan() { var temp = UIManager.Instance.GetView().Plans.Find(a => a.Name == name); UIManager.Instance.GetView().Plans.Remove(temp); Destroy(gameObject); UIManager.Instance.GetView().SavePlanList(); } }