4.4 创建游戏管理器 自己的理解以及体会
来源:互联网 发布:台湾导弹误 知乎 编辑:程序博客网 时间:2024/05/21 09:00
游戏管理机器,主要是用来管理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 initializationvoid 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 framevoid 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); }}
0 0
- 4.4 创建游戏管理器 自己的理解以及体会
- 自己理解的游戏开发
- Unity实现自己的简易游戏窗口管理器
- oracle全文索引的创建和使用,以及一些体会
- 自己的一些体会
- 写游戏的体会
- 游戏的基本体会
- 创建以及删除自己的Git仓库
- 任务管理器的创建
- 对自己学习的体会
- 体会 AND 自己的规划
- 模式识别的理解(完全是自己体会后写的)
- 模式识别的理解(完全是自己体会后写的)
- 自己对C++虚函数使用的深刻体会,以及覆写,重载的区别?
- 打造自己的任务管理器
- threadlocal的理解与体会
- 自定义View的理解体会
- 创建自己的游戏工作室的72个建议
- java 用new语句创建(实例化)对象的三种方法的性能对比
- linuxshell中"2>&1"含义
- 使用libmemcached访问Memcached
- Linux 内存及cpu解析
- perl 验证vmstat si so默认单位为KB
- 4.4 创建游戏管理器 自己的理解以及体会
- chmod维护文件权限
- js入门(一)——script标签、变量与运算符
- UVa 455 Periodic Strings
- 2015年9月目标
- 察言观色的办法
- 存储scale-up和scalce-out架构
- sftp 获取远程文件列表
- 《笨方法学python-5》之异常处理