Unity3D手机游戏开发3.5 UI界面_Unity3D手机游戏开发3.5 UI界面试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Unity3D手机游戏开发 > 3.5 UI界面

Unity3D手机游戏开发——3.5 UI界面

3.5 UI界面 在继续改进主角和敌人的脚本之前,我们需要创建一个游戏管理器来管理游戏中的事件和UI界面显示。 在前一章,我们使用OnGUI制作了一些简单的UI,使用OnGUI可以更快地创建UI元素,但它的缺点是性能较差,在编写脚本的同时也无法预览UI的效果。这一次我们将使用另一种方式,直接在场景中创建2D贴图表示UI界面。 在Project窗口找到预设的UI贴图文件,如图3-12所示 图3-12 设置动画过渡 选择贴图文件,在菜单栏选择【GameObject】→【Create Other】→【GUI Texture】创建2D贴图,然后在Inspector窗口移动贴图的位置,在Game窗口可以直接预览贴图效果。默认贴图是中心对齐,将Pixel Inset的X和Y设为0即为左下对齐,如果将X和Y设为Width和Height的负值,即为右上对齐,可根据需要调整,如图3-13所示。 图3-13 UI贴图效果 接下来我们创建文字。到Windows的Font文件夹中找一个喜欢的字体,将其复制到Unity工程内,确定其处于选中状态,在菜单栏选择【GameObject】→【Create Other】→【GUI Text】创建游戏文字,并调整位置和大小等。文字的常见设置包括,在Text中输入预设的文字,在Anchor中选择文字的轴心点,在Alignment中选择文字对齐方式,在Font Size中设置文字的大小,如图3-14所示。 图3-14 设置文字 最后的UI界面效果如图3-15所示。 图3-15 UI界面效果 创建一个空的游戏体命名为GameManager,将其坐标设为0,然后将所有2D贴图和文字都作为其子物体。因为我们需要在游戏中动态改变文字的内容,所以需要知道文字的名字,这里设txt_ammo为弹药数量的名字,txt_hiscore为记录,txt_life为生命,txt_score为得分,如图3-16所示。 图3-16 游戏文字的名字 创建脚本GameManager.cs,将其指定给游戏体GameManager。 using UnityEngine; using System.Collections; public class GameManager : MonoBehaviour { public static GameManager Instance = null; // 游戏得分 int m_score = 0; // 游戏最高得分 static int m_hiscore = 0; // 弹药数量 int m_ammo = 100; // 游戏主角 Player m_player; // UI文字 GUIText txt_ammo; GUIText txt_hiscore; GUIText txt_life; GUIText txt_score; // Use this for initialization void Start () { Instance = this; // 获得主角 m_player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>(); // 获得设置的UI文字 txt_ammo = this.transform.FindChild("txt_ammo").GetComponent<GUIText>(); txt_hiscore = this.transform.FindChild("txt_hiscore").GetComponent<GUIText>(); txt_life = this.transform.FindChild("txt_life").GetComponent<GUIText>(); txt_score = this.transform.FindChild("txt_score").GetComponent<GUIText>(); } } 这里的代码主要是通过FindChild函数获得文字UI组件。 添加函数,用于更新 UI界面信息。 // 更新分数 public void SetScore(int score) { m_score+= score; if (m_score > m_hiscore) m_hiscore = m_score; txt_score.text = "Score "+m_score; txt_hiscore.text = "High Score "+ m_hiscore; } // 更新弹药 public void SetAmmo(int ammo) { m_ammo -= ammo; // 如果弹药为负数,重新填弹 if (m_ammo <= 0) m_ammo = 100 - m_ammo; txt_ammo.text = m_ammo.ToString()+"/100"; } // 更新生命 public void SetLife(int life) { txt_life.text = life.ToString(); } 如果主角的生命为零,则游戏失败。这里用OnGUI提供一个简单的按钮重新开始游戏,添加代码如下: void OnGUI() { if (m_player.m_life <= 0) { // 居中显示文字 GUI.skin.label.alignment = TextAnchor.MiddleCenter; // 改变文字大小 GUI.skin.label.fontSize = 40; // 显示Game Over GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "Game Over"); // 显示重新游戏按钮 GUI.skin.label.fontSize = 30; if ( GUI.Button( new Rect( Screen.width*0.5f-150,Screen.height*0.75f, 300,40),"Try again")) { Application.LoadLevel(Application.loadedLevelName); } } }

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Unity3D手机游戏开发》其他试读目录

• 3.1 策划
• 3.2 游戏场景
• 3.3 主角
• 3.4 敌人
• 3.5 UI界面 [当前]
• 3.6 交互
• 3.7 出生点
• 小结
• 4.1 策划
• 4.2 游戏场景
• 4.3 摄像机
• 4.4 游戏管理器
• 4.5 路点
• 4.6 敌人
• 4.7 敌人生成器
• 4.8 防守单位
• 4.9 生命条
• 4.10 自定义按钮
• 小结
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •