using System; using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; using UnityEngine.UI; public class handTest : MonoBehaviour { [SerializeField] TMP_InputField 臉盆深度_tb,臉盆寬度_tb,扶手臉盆間距_tb,牆體臉盆間距_tb,階梯階數_tb; [SerializeField] TMP_InputField[] 高; [SerializeField] TMP_InputField[] 深; [SerializeField] TextMeshProUGUI 扶手深度左_tb,扶手深度右_tb,扶手寬度_tb,總長度_tb,扶手深度左_lb,扶手深度右_lb,扶手單位左_lb,扶手單位右_lb,總深_tb,總高_tb; [SerializeField] Toggle 左側_ch,右側_ch,雙側_ch,單腳_ch,雙腳_ch; [SerializeField] GameObject 雙側雙腳_pic,左側雙腳_pic,右側雙腳_pic,左側單腳_pic,右側單腳_pic,扶手試算_pl,斜坡板試算_pl,扶手試算_bt,斜坡板試算_bt; bool 已開啟 = false; public CanvasScaler canvasScaler; private bool isUpdating = false; float screenWidth,screenHeight; // Start is called before the first frame update void Awake(){ 重製TB(); 左側_ch.onValueChanged.AddListener(左側_Click);右側_ch.onValueChanged.AddListener(右側_Click);雙側_ch.onValueChanged.AddListener(雙側_Click); 單腳_ch.onValueChanged.AddListener(單腳_Click);雙腳_ch.onValueChanged.AddListener(雙腳_Click); 臉盆深度_tb.onValueChanged.AddListener(臉盆_textchange); 臉盆寬度_tb.onValueChanged.AddListener(臉盆_textchange); 扶手臉盆間距_tb.onValueChanged.AddListener(臉盆_textchange); 牆體臉盆間距_tb.onValueChanged.AddListener(臉盆_textchange); 階梯階數_tb.onValueChanged.AddListener(階梯階數_textChange); for (int i = 0; i < 高.Length; i++){ int index = i; 高[index].onValueChanged.AddListener(delegate { 總高(); }); } for (int i = 0; i < 深.Length; i++){ int index = i; 深[index].onValueChanged.AddListener(delegate { 總高(); }); } } void Start(){ Screen.autorotateToPortrait = false; Screen.orientation = ScreenOrientation.Portrait; screenWidth = Screen.width; screenHeight = Screen.height; float rate = 900.0f / 1900.0f; if (canvasScaler == null) { canvasScaler = GetComponent(); } if (Screen.widthrate) { canvasScaler.matchWidthOrHeight = 1f; } else { canvasScaler.matchWidthOrHeight = 0f; } } else { Main.Global.rate_ = screenWidth/screenHeight; Main.Global.rate = 1/Main.Global.rate_; if (Main.Global.rate>rate) { canvasScaler.matchWidthOrHeight = 1f; } else { canvasScaler.matchWidthOrHeight = 0f; } } 左側_ch.isOn=false;右側_ch.isOn=false;單腳_ch.isOn=false;雙腳_ch.isOn=true;雙側_ch.isOn=true;單腳_ch.interactable=false;雙腳_ch.interactable=false; 雙側雙腳_pic.SetActive(true);左側雙腳_pic.SetActive(false);右側雙腳_pic.SetActive(false);左側單腳_pic.SetActive(false);右側單腳_pic.SetActive(false); 牆體臉盆間距_tb.enabled=false; 臉盆深度_tb.text="";臉盆寬度_tb.text="";扶手臉盆間距_tb.text="";牆體臉盆間距_tb.text=""; 扶手深度左_tb.text="";扶手深度右_tb.text="";扶手寬度_tb.text="";總長度_tb.text=""; 已開啟=true; } void OnDestroy(){ 左側_ch.onValueChanged.RemoveListener(左側_Click);右側_ch.onValueChanged.RemoveListener(右側_Click);雙側_ch.onValueChanged.RemoveListener(雙側_Click); 單腳_ch.onValueChanged.RemoveListener(單腳_Click);雙腳_ch.onValueChanged.RemoveListener(雙腳_Click); 臉盆深度_tb.onValueChanged.RemoveListener(臉盆_textchange); 臉盆寬度_tb.onValueChanged.RemoveListener(臉盆_textchange); 扶手臉盆間距_tb.onValueChanged.RemoveListener(臉盆_textchange); 牆體臉盆間距_tb.onValueChanged.RemoveListener(臉盆_textchange); 階梯階數_tb.onValueChanged.RemoveListener(階梯階數_textChange); } void 階梯階數_textChange(string text) { if (isUpdating) return; if (!string.IsNullOrEmpty(text) && int.TryParse(text, out int value)) { if (value > 10) { isUpdating = true; 階梯階數_tb.text = "10"; isUpdating = false; } } 重製TB(); } void 總高(){ float 總和 = 0f; for (int i = 0; i < 深.Length; i++){ if (!string.IsNullOrEmpty(深[i].text) && float.TryParse(深[i].text, out float val)){ 總和 += val; } } float 總和2 = 0f; for (int i = 0; i < 高.Length; i++){ if (!string.IsNullOrEmpty(高[i].text) && float.TryParse(高[i].text, out float val)){ 總和2 += val; } } 總深_tb.text = 總和.ToString(); 總高_tb.text = 總和2.ToString(); } public void 系統設定_bt(){ Main.change_Secen(2); } void 臉盆_textchange(string newText){ if(已開啟){面扶計算();} } public void 扶手試算_bt_click(){ if (斜坡板試算_pl.activeInHierarchy){ 斜坡板試算_pl.SetActive(false); } 扶手試算_pl.SetActive(true); 扶手試算_bt.SetActive(false); 斜坡板試算_bt.SetActive(true); } public void 斜坡板試算_bt_click(){ if (扶手試算_pl.activeInHierarchy){ 扶手試算_pl.SetActive(false); } 斜坡板試算_pl.SetActive(true); 扶手試算_bt.SetActive(true); 斜坡板試算_bt.SetActive(false); } public void 左側_Click(bool isOn) { if (isOn) { 左側_ch.interactable = false; 右側_ch.interactable = true; 雙側_ch.interactable = true; 單腳_ch.interactable = true; 雙腳_ch.interactable = true; 右側_ch.isOn = false; 雙側_ch.isOn = false; 圖片判斷(); 牆體臉盆間距_tb.enabled=true; 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(true); 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(false); 扶手深度左_lb.gameObject.SetActive(true); 扶手深度右_lb.gameObject.SetActive(false); 扶手單位左_lb.gameObject.SetActive(true); 扶手單位右_lb.gameObject.SetActive(false); if (已開啟) { 面扶計算(); } } } public void 右側_Click(bool isOn){ if(isOn){ 左側_ch.interactable=true;右側_ch.interactable=false;雙側_ch.interactable=true;單腳_ch.interactable=true;雙腳_ch.interactable=true; 左側_ch.isOn=false;雙側_ch.isOn=false;圖片判斷(); 牆體臉盆間距_tb.enabled=true; 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(false); 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(true); 扶手深度左_lb.gameObject.SetActive(false);扶手深度右_lb.gameObject.SetActive(true); 扶手單位左_lb.gameObject.SetActive(false);扶手單位右_lb.gameObject.SetActive(true); if(已開啟){面扶計算();} } } public void 雙側_Click(bool isOn){ if(isOn){ 左側_ch.interactable=true;右側_ch.interactable=true;雙側_ch.interactable=false;單腳_ch.interactable=false;雙腳_ch.interactable=false; 左側_ch.isOn=false;右側_ch.isOn=false;單腳_ch.isOn=false;雙腳_ch.isOn=true;圖片判斷(); 牆體臉盆間距_tb.enabled=false; 扶手深度左_tb.transform.parent.parent.gameObject.SetActive(true); 扶手深度右_tb.transform.parent.parent.gameObject.SetActive(true); 扶手深度左_lb.gameObject.SetActive(true);扶手深度右_lb.gameObject.SetActive(true); 扶手單位左_lb.gameObject.SetActive(true);扶手單位右_lb.gameObject.SetActive(true); if(已開啟){面扶計算();} } } public void 單腳_Click(bool isOn){ if(isOn){ 單腳_ch.interactable=false;雙腳_ch.interactable=true; 雙腳_ch.isOn=false;圖片判斷(); if(已開啟){面扶計算();} } } public void 雙腳_Click(bool isOn){ if(isOn){ 單腳_ch.interactable=true;雙腳_ch.interactable=false; 單腳_ch.isOn=false;圖片判斷(); if(已開啟){面扶計算();} } } private void 圖片判斷(){ 雙側雙腳_pic.SetActive(false);左側雙腳_pic.SetActive(false);右側雙腳_pic.SetActive(false);左側單腳_pic.SetActive(false);右側單腳_pic.SetActive(false); if(左側_ch.isOn && 單腳_ch.isOn && 雙腳_ch.isOn==false){ 左側單腳_pic.SetActive(true); }else if(左側_ch.isOn && 雙腳_ch.isOn && 單腳_ch.isOn==false){ 左側雙腳_pic.SetActive(true); }else if(右側_ch.isOn && 單腳_ch.isOn && 雙腳_ch.isOn==false){ 右側單腳_pic.SetActive(true); }else if(右側_ch.isOn && 雙腳_ch.isOn && 單腳_ch.isOn==false){ 右側雙腳_pic.SetActive(true); }else{ 雙側雙腳_pic.SetActive(true); } } private void 面扶計算(){ double 總長度, 左側深度, 右側深度, 扶手寬度; double 臉盆深度=0,扶手臉盆間距=0,臉盆寬度=0,牆體臉盆間距=0; if(臉盆深度_tb.text != ""){臉盆深度=double.Parse(臉盆深度_tb.text);} if(扶手臉盆間距_tb.text != ""){扶手臉盆間距=double.Parse(扶手臉盆間距_tb.text);} if(臉盆寬度_tb.text != ""){臉盆寬度=double.Parse(臉盆寬度_tb.text);} if(牆體臉盆間距_tb.text != ""){牆體臉盆間距=double.Parse(牆體臉盆間距_tb.text);} if(雙側_ch.isOn){ if(臉盆深度_tb.text != ""){ 左側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0); 右側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0); }else{ 左側深度=0;右側深度=0; } if(臉盆寬度_tb.text != ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 4 + Math.Round(扶手臉盆間距, 0)*2; }else{ 扶手寬度=0; } }else if(右側_ch.isOn){ if(臉盆深度_tb.text != ""){ 左側深度=0;右側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0); }else{ 左側深度=0;右側深度=0; } if(臉盆寬度_tb.text != ""){ if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text != ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0) + Math.Round(牆體臉盆間距, 0); }else if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text == ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0); }else if(扶手臉盆間距_tb.text == "" && 牆體臉盆間距_tb.text != ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(牆體臉盆間距, 0); }else{ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2; } }else{ 扶手寬度=0; } }else{ if(臉盆深度_tb.text != ""){ 左側深度=Math.Round(臉盆深度, 0) + 2 + Math.Round(扶手臉盆間距, 0);右側深度=0; }else{ 左側深度=0;右側深度=0; } if(臉盆寬度_tb.text != ""){ if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text != ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0) + Math.Round(牆體臉盆間距, 0); }else if(扶手臉盆間距_tb.text != "" && 牆體臉盆間距_tb.text == ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(扶手臉盆間距, 0); }else if(扶手臉盆間距_tb.text == "" && 牆體臉盆間距_tb.text != ""){ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2 + Math.Round(牆體臉盆間距, 0); }else{ 扶手寬度 = Math.Round(臉盆寬度, 0) + 2; } }else{ 扶手寬度=0; } } 扶手深度左_tb.text = 左側深度.ToString();扶手深度右_tb.text = 右側深度.ToString();扶手寬度_tb.text = 扶手寬度.ToString(); 總長度 = 左側深度 + 右側深度 + 扶手寬度;總長度_tb.text = 總長度.ToString(); } private void 重製TB(){ for(int i=0;i<=高.Length-1;i++){ 高[i].text=""; 深[i].text=""; } } }