| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class GameView : PinBallUIBase
- {
- /// <summary>左转按钮 </summary>
- public GameObject btn_Left;
- /// <summary>右转按钮 </summary>
- public GameObject btn_Right;
- /// <summary>加满子弹 </summary>
- public GameObject btn_AddBullet;
- /// <summary>取消发射按钮 </summary>
- public Image btn_CancelShoot;
- public GameObject btn_Return;
- /// <summary>倒计时文本 </summary>
- public Text text_downTime;
- /// <summary>子弹数量文本 </summary>
- public Text text_ArrowCount;
- /// <summary>目标数量文本 </summary>
- public Text text_TargetCount;
- /// <summary>倒计时数量 </summary>
- public int int_ShowTime;
- /// <summary>子弹数量 </summary>
- public int int_bulletCount;
- /// <summary>剩余目标 </summary>
- public int int_tangetNum;
- /// <summary>目标总数量 </summary>
- public int int_tangetCount;
- /// <summary>是否倒计时 </summary>
- public bool isShowTime;
- /// <summary>时间累计 </summary>
- private float timeing;
- /// <summary>
- /// 测试面板
- /// </summary>
- public GameObject contorlPanel;
- private GameObject btn_Contorl;
- /// <summary>准心开关</summary>
- public Toggle toggle_IsAni;
- public Toggle tgl_isShowGun; //是否显示枪模型
- /// <summary>
- /// 摄像机距离 调整测试
- /// </summary>
- private Text text_CameraDis;
- private Slider slider_CameraDis;
- /// <summary>
- /// 气球飞行速度
- /// </summary>
- private Text text_BalloonFlySpeed;
- private Slider slider_BalloonFlySpeed;
- //子弹相关
- private InputField input_Mass;
- private InputField input_Force;
- private Toggle useGravity;
- private Text text_BulletBounciness;
- private Slider slider_BulletBounciness;
- protected override void Init()
- {
- base.Init();
- uILevel = PinBallUILevel.Content;
- btn_Left = transform.Find("btn_Left").gameObject;
- btn_Right = transform.Find("btn_Right").gameObject;
- btn_AddBullet = transform.Find("btn_AddBullet").gameObject;
- btn_Return = transform.Find("btn_Return").gameObject;
- btn_CancelShoot = transform.Find("btn_CancelShoot").GetComponent<Image>();
- Transform hintPanel = transform.Find("HintPanel");
- text_downTime = hintPanel.Find("text_downTime").GetComponent<Text>();
- text_ArrowCount = hintPanel.Find("text_ArrowCount").GetComponent<Text>();
- text_TargetCount = hintPanel.Find("text_TargetCount").GetComponent<Text>();
- UIEventListener.Get(btn_Left).onClick = OnClick;
- UIEventListener.Get(btn_Right).onClick = OnClick;
- UIEventListener.Get(btn_AddBullet).onClick = OnClick;
- UIEventListener.Get(btn_Return).onClick = OnClick;
-
-
-
- UIEventListener.Get(btn_CancelShoot.gameObject).onEnter = OnPointerClick;
- UIEventListener.Get(btn_CancelShoot.gameObject).onExit = OnExit;
- //测试项
- contorlPanel = transform.Find("ContorlPanel").gameObject;
- btn_Contorl = transform.Find("btn_Contorl").gameObject;
- text_CameraDis = contorlPanel.transform.Find("Text_CameraDis").GetComponent<Text>();
- slider_CameraDis = contorlPanel.transform.Find("Slider_CameraDis").GetComponent<Slider>();
- slider_CameraDis.onValueChanged.AddListener(SliderCameraDis);
- slider_CameraDis.minValue = 5;
- slider_CameraDis.maxValue = 16;
- text_BalloonFlySpeed = contorlPanel.transform.Find("Text_BalloonFlySpeed").GetComponent<Text>();
- slider_BalloonFlySpeed = contorlPanel.transform.Find("Slider_BalloonFlySpeed").GetComponent<Slider>();
- slider_BalloonFlySpeed.onValueChanged.AddListener(SliderBalloonFlySpeed);
- UIEventListener.Get(btn_Contorl.gameObject).onClick = OnTestClick;
- input_Mass = contorlPanel.transform.Find("InputField_BulletMass").GetComponent<InputField>();
- input_Force = contorlPanel.transform.Find("InputField_BulletForce").GetComponent<InputField>();
- useGravity = contorlPanel.transform.Find("Tgl_useGravity").GetComponent<Toggle>();
- UIEventListener.Get(useGravity.gameObject).onClick = OnTestClick;
- input_Mass.onEndEdit.AddListener(OnEndEditMass);
- input_Force.onEndEdit.AddListener(OnEndEditForce);
- input_Mass.text = GameInstantiateData.Instance.bullet_Mass.ToString();
- input_Force.text = GameInstantiateData.Instance.bullet_Force.ToString();
- useGravity.isOn = GameInstantiateData.Instance.bullet_useGravity;
- text_BulletBounciness = contorlPanel.transform.Find("Text_BulletBounciness").GetComponent<Text>();
- slider_BulletBounciness = contorlPanel.transform.Find("Slider_BulletBounciness").GetComponent<Slider>();
- slider_BulletBounciness.onValueChanged.AddListener(ChangeBulletBounciness);
- toggle_IsAni = contorlPanel.transform.Find("toggle_IsAni").GetComponent<Toggle>();
- tgl_isShowGun = contorlPanel.transform.Find("toggle_IsShowGun").GetComponent<Toggle>();
- UIEventListener.Get(toggle_IsAni.gameObject).onClick = OnTestClick;
- UIEventListener.Get(tgl_isShowGun.gameObject).onClick = OnTestClick;
- }
- private void ChangeBulletBounciness(float value)
- {
- text_BulletBounciness.text = "子弹弹力:" + value;
- GameInstantiateData.Instance.bullet_Bounciness = value;
- }
- /// <summary>
- /// 控制面本测试按钮功能
- /// </summary>
- /// <param name="go"></param>
- private void OnTestClick(GameObject go)
- {
- if (go.name.Contains("btn_Contorl"))
- {
- contorlPanel.SetActive(!contorlPanel.activeSelf);
- }
- else if (go.name.CompareTo("Tgl_useGravity") == 0)
- {
- GameInstantiateData.Instance.bullet_useGravity = useGravity.isOn;
- }
- else if (go.name.Contains("toggle_IsAni"))
- {
- bool value = toggle_IsAni.isOn;
- LauncherCtrl.instance.ShowAni(value);
- }
- else if (go.name.Contains("toggle_IsShowGun"))
- {
- bool value = tgl_isShowGun.isOn;
- LauncherCtrl.instance.ShowGunModel(value);
- }
- }
- /// <summary>
- /// 子弹质量修改
- /// </summary>
- /// <param name="value"></param>
- private void OnEndEditMass(string value)
- {
- GameInstantiateData.Instance.bullet_Mass = float.Parse(value);
- }
- /// <summary>
- /// 子弹 发射崇力 修改
- /// </summary>
- /// <param name="value"></param>
- private void OnEndEditForce(string value)
- {
- GameInstantiateData.Instance.bullet_Force = int.Parse(value);
- }
- /// <summary>
- /// 按钮点击
- /// </summary>
- /// <param name="go"></param>
- private void OnClick(GameObject go)
- {
- if (go.name.Contains("btn_Left"))
- {
- GameMgr.instance.RotateCastle(1);
- }
- else if (go.name.Contains("btn_Right"))
- {
- GameMgr.instance.RotateCastle(-1);
- }
- else if (go.name.Contains("btn_AddBullet"))
- {
- GameMgr.instance.AddBulletCount();
- }
- else if (go.name.Contains("btn_Return"))
- {
- PinBallUIManager.instance.DestroyAllUI();
- PinBallUIManager.instance.ShowUI(new object[] { "LoadingView", "Start" });
- }
- else
- {
- Debug.LogError(go.name + "未找到注册方法");
- }
- }
- private void SliderBalloonFlySpeed(float value)
- {
- GameInstantiateData.Instance.int_balloonFlySpeed = (int)value;
- text_BalloonFlySpeed.text = "气球飞行速度" + value;
- }
- private void SliderCameraDis(float value)
- {
- //print(value);
- int v = (int)value;
- text_CameraDis.text = "摄像机距离城堡位置:" + v;
- if (GameInstantiateData.Instance.int_CameraToCastleDis == v)
- {
- return;
- }
- // int dis = (int)Vector3.Distance(LauncherCtrl.instance.launcherCamera.transform.position, GameMgr.instance.transform.position);
- Vector3 pos = Vector3.MoveTowards(LauncherCtrl.instance.launcherCamera.transform.position,
- GameMgr.instance.transform.position, GameInstantiateData.Instance.int_CameraToCastleDis - value);
- LauncherCtrl.instance.launcherCamera.transform.position = pos;
- GameInstantiateData.Instance.int_CameraToCastleDis = v;
- }
- protected override void ShowUIOpt(object[] args)
- {
- //传值- 开始倒计时,游戏倒计时时间,子弹数量,目标数量
- isShowTime = (bool)args[0];
- int_ShowTime = (int)args[1];
- int_bulletCount = (int)args[2];
- int_tangetNum = int_tangetCount = (int)args[3];
- SetTextDownTime();
- SetTextBulletCount();
- SetTextTargetCount();
- GameInstantiateData.Instance.int_CameraToCastleDis =
- (int)Vector3.Distance(LauncherCtrl.instance.launcherCamera.transform.position, GameMgr.instance.transform.position);
- // text_CameraDis.text = "摄像机距离城堡位置:" + int_CameraDisDis;
- slider_CameraDis.value = GameInstantiateData.Instance.int_CameraToCastleDis;
- slider_BalloonFlySpeed.value = GameInstantiateData.Instance.int_balloonFlySpeed;
- }
- protected override void Broadcast(object[] args)
- {
- //args[0] 是否倒计时 args[1] 类型
- isShowTime = (bool)args[0];
- if (isShowTime)
- {
- // 类型,1——目标数量,2——子弹数量 3——力量计时
- int type = (int)args[1];
- if (type == 1)
- {
- int_tangetNum = (int)args[2];
- SetTextTargetCount();
- }
- else if(type == 2)
- {
- int_bulletCount = (int)args[2];
- SetTextBulletCount();
- }
- else if (type == 3)
- {
-
- }
- }
- else
- {
-
- }
- }
- protected override void HideUIOpt()
- {
-
- }
-
- /// <summary>
- /// 进入按钮
- /// </summary>
- /// <param name="go"></param>
- private void OnPointerClick(GameObject go)
- {
- if (go.name.Contains("btn_CancelShoot"))
- {
- btn_CancelShoot.color = Color.red;
- }
- }
- /// <summary>
- /// 退出按钮
- /// </summary>
- /// <param name="go"></param>
- private void OnExit(GameObject go)
- {
- if (go.name.Contains("btn_CancelShoot"))
- {
- btn_CancelShoot.color = Color.white;
- }
- }
- /// <summary>
- /// 设置倒计时
- /// </summary>
- private void SetTextDownTime()
- {
- int m = int_ShowTime / 60;
- string sm = m >= 10 ? (m).ToString() : "0" + m;
- int s = int_ShowTime % 60;
- string ss = s >= 10 ? s.ToString() : "0" + s;
- string time = sm + ":" + ss;
- text_downTime.text = time;
- }
- /// <summary>
- /// 设置文本,子弹数量
- /// </summary>
- private void SetTextBulletCount()
- {
- text_ArrowCount.text = int_bulletCount.ToString();
- if (int_bulletCount <= 0 && int_ShowTime >= 10)
- {
- Invoke("GameOver", 1f);
- }
- }
- /// <summary>
- /// 设置文本,目标数量
- /// </summary>
- private void SetTextTargetCount()
- {
- text_TargetCount.text = int_tangetNum + "/" + int_tangetCount;
- }
- private void GameOver()
- {
- GameMgr.instance.GameOver();
- }
- private void Update()
- {
- if (isShowTime)
- {
- timeing += Time.deltaTime;
- if (timeing >= 1f)
- {
- timeing = 0;
- int_ShowTime -= 1;
-
- if (int_ShowTime < 0)
- {
- isShowTime = false;
- Debug.Log("时间结束");
- GameOver();
- }
- else
- {
- SetTextDownTime();
- }
- }
- }
- //if (isShowAni)
- //{
- // Vector2 uguiPos = Vector2.zero;
- // if (isAniGun)
- // {
- // //十字准心在枪口
- // // img_Anim.transform.localPosition
- // Vector3 viewportPos = LauncherCtrl.instance.launcherCamera.WorldToViewportPoint(LauncherCtrl.instance.gunPoint.transform.position);
- // //获得 (枪口在摄像机的屏幕位置 - 初始中点位置) * 屏幕大小1280 * 摄像机的摄像角度180 / 100
- // uguiPos.x = (viewportPos.x - 0.5f) * 1280 * 180 / 100; // canvasRtm.sizeDelta.x;
- // uguiPos.y = (viewportPos.y - 0.3f) * 720 * 180 / 100;// canvasRtm.sizeDelta.y;
- // img_Anim.transform.localPosition = uguiPos;
- // //uguiPos.x = (viewportPos.x) * canvasRtm.sizeDelta.x;
- // //uguiPos.y = (viewportPos.y) * canvasRtm.sizeDelta.y;
- // // img_Anim.transform.localPosition = uguiPos;
- // // print(viewportPos);
- // }
- // else
- // {
- // //十字准心在目标上
- // float maxDistance = 100;
- // int layerMask = 1 << 8; //TargetLayerMask
- // RaycastHit raycastHit;
- // Ray ray = new Ray(LauncherCtrl.instance.gunPoint.transform.position, LauncherCtrl.instance.transform.TransformDirection(Vector3.forward));
- // Physics.Raycast(ray.origin, ray.direction, out raycastHit, maxDistance, layerMask);
- // if (raycastHit.collider != null)
- // {
- // Vector3 viewportPos = LauncherCtrl.instance.launcherCamera.WorldToViewportPoint(raycastHit.point);
- // uguiPos.x = (viewportPos.x - 0.5f) * 1280;// * 180 / 100; // canvasRtm.sizeDelta.x;
- // uguiPos.y = (viewportPos.y - 0.5f) * 720;// * 180 / 100;// canvasRtm.sizeDelta.y;
- // img_Anim.transform.localPosition = uguiPos;
- // }
- // else
- // {
- // //img_Anim.gameObject.SetActive(false);
- // img_Anim.transform.localPosition = vec_AinPos;
- // }
- // }
-
- //}
- }
- }
|