4.4 创建游戏管理器 自己的理解以及体会
2015-09-05 21:59
459 查看
游戏管理机器,主要是用来管理UI,处理鼠标输入和逻辑事件等。
/* * GameManager Definition * Created by taotao man on 2015-8-1 * brief: 创建游戏管理器,它主要管理UI,处理鼠标输入和逻辑事件。 * // 修改记录 * date: * add SetA(); * Change GetA(); */ using UnityEngine; using System.Collections; // using System.Collections.Generic; /* // 包含定义泛型集合的接口和类;泛型集合允许用户创建强类型的集合, 这种集合在类型安全和性能上均优于非泛型强类型集合。 */ using UnityEngine.UI; // 引用UI命名空间 using UnityEngine.Events; //引用事件命名空间 using UnityEngine.EventSystems; // /* 如果你使用 UI 系统,那么 EventSystem 对象会自动创建。这个对象负责监听用户输入。 * 默认情况下,在电脑上可以使用键盘和鼠标输入,在移动设备上可以使用触摸输入。 * 但是如果你要为surface这样的设备开发,你也可以同时启用两种输入。当需要屏蔽用户输入时,将此对象关闭即可。 * UnityEngine.EventSystems.EventSystem.current 保存了当前活动的 EventSystem 对象。 * */ public class GameManager : MonoBehaviour { public static GameManager Instance; // 加static 的是静态成员,不能实例化,在你运行的时候他自己在内存中开辟了块空间,不用在new, // 有点像全局变量,如果不用你必须去 实例化(new)才能用 // 波数 public int m_wave = 1; public int m_waveMax = 10; // 生命 public int m_life = 10; // 铜钱数量 public int m_point = 50; // 文字控件 Text m_txt_wave; Text m_txt_life; Text m_txt_point; // 重新游戏按钮 Button m_but_try; //public bool m_debug = false; // 控制是否显示路点之间的连线 // 当前是否选中的创建防守单位的按钮 bool m_isSelectedButton = false; void Awake() // 脚本唤醒,系统执行的第一个方法,在脚本中仅执行一次 { Instance = this; } // Use this for initialization void Start () { // 定义UnityAction,在OnButCreateDefenderDown函数中响应按钮按下事件 UnityAction<BaseEventData> downAction = new UnityAction<BaseEventData>(OnButCreateDefenderDown); // 定义UnityAction,在OnButCreateDefenderDown函数中响应按钮抬起事件 UnityAction<BaseEventData> upAction = new UnityAction<BaseEventData>(OnButCreateDefenderUp); // 定义按钮按下事件Entry EventTrigger.Entry down = new EventTrigger.Entry(); down.eventID = EventTriggerType.PointerDown; down.callback.AddListener(downAction); // 定义按钮抬起事件Entry EventTrigger.Entry up = new EventTrigger.Entry(); up.eventID = EventTriggerType.PointerUp; up.callback.AddListener(upAction); // 查找所有子物体,根据名称获取UI控件 foreach(Transform t in this.GetComponentsInChildren<Transform>()) { if (t.name.CompareTo("wave") == 0) // 找到文字控件“波数” { m_txt_wave = t.GetComponent<Text>(); SetWave(1); } else if(t.name.CompareTo("life") == 0)// 找到文字控件“生命” { m_txt_life = t.GetComponent<Text>(); m_txt_life.text = string.Format("生命:<color=yellow>{0}</color>", m_life); } else if(t.name.CompareTo("point") == 0) // 找到文字控件“分数” { m_txt_point = t.GetComponent<Text>(); m_txt_point.text = string.Format("铜钱:<color=yellow>{0}</color>", m_point); } else if(t.name.CompareTo("but_try") == 0) // 找到按钮控件“重新游戏” { m_but_try = t.GetComponent<Button>(); // 添加按钮点击函数回调 m_but_try.onClick.AddListener(OnButRetry); m_but_try.gameObject.SetActive(false); // 隐藏重新游戏按钮 } else if(t.name.Contains("but_player")) // 找到按钮控件“创建防守单位” { // 给创建防守单位按钮添加EventTrigger,并添加前面定义的按钮事件 EventTrigger trigger = t.gameObject.AddComponent<EventTrigger>(); trigger.delegates = new List<EventTrigger.Entry>(); trigger.delegates.Add(down); trigger.delegates.Add(up); } } } // Update is called once per frame void Update () { } // 更新文字控件波数 public void SetWave(int wave) { m_wave = wave; m_txt_wave.text = string.Format("波数:<color=yellow>{0}/{1}</color>", m_wave, m_waveMax); } // 响应重新游戏按钮 void OnButRetry() { Application.LoadLevel(Application.loadedLevelName); } // 按下"创建防守单位按钮" void OnButCreateDefenderDown(BaseEventData data)// 按下"创建防守单位按钮" { m_isSelectedButton = true; } // 响应创建防守单位按钮 void OnButCreateDefenderUp(BaseEventData data) { // 打印下当前按钮的名字 GameObject go = data.selectedObject; Debug.Log(go.name); } }
相关文章推荐
- 《笨方法学python-5》之异常处理
- 带有下划线和动画效果的视图切换(addChildViewController)
- centos下chm阅读器
- html cookie
- chmod维护文件权限
- UVa 455 Periodic Strings
- ios学习笔记(1)
- CSS3学习教程:Media Queries详解
- 装饰者模式(不太理解的设计模式)
- Python3中map函数的问题
- HDU 5427 A problem of sorting(字符串处理+排序)——BestCoder Round #54(div.2)
- perl 验证vmstat si so默认单位为KB
- Linux 内存及cpu解析
- Linux网络管理--网络管理基本命令
- linuxshell中"2>&1"含义
- hdu 1532
- 使用libmemcached访问Memcached
- java 用new语句创建(实例化)对象的三种方法的性能对比
- C# 重写UserControl.Text 属性值运行清空的解决方法
- HDU 4499 connon(2013吉林通化邀请赛G)