Unity学习之GUI基础
2014-12-29 20:38
337 查看
unity学习,希望我的博客能给喜欢unity的朋友带来帮助
今天学习了新的内容:GUI。
GUI控制利用一类被称为OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI函数可以在每帧调用,就像Update()函数一样。
GUI可以在unity界面中添加文本和按钮等。
下面用GUI来完善一下做过的飞机大战游戏,可以让它在游戏界面中显示我方飞机的生命值和得分。
完成如图的效果:
代码如下:
using UnityEngine;
using System.Collections;
public class GUIText : MonoBehaviour {
public int lifeTime = 0;//我方生命值
public int score = 0;//得分
public static GUIText instance;//管理对象初始化,自身定为静态变量
public Player player;//获取我方飞机
void Start()
{
instance = this;
player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
}
void OnGUI()
{
lifeTime = player.i;
GUI.Label(new Rect(20, 30, 100, 20), "生命值为:" + lifeTime);
GUI.Label(new Rect(20, 70, 100, 20), "分数:" + score);
}
}
然后再我方飞机和敌方飞机的脚本中调用:
//敌方飞机中的调用
void OnTriggerEnter(Collider col)
{
if (col.tag == "Myrocket")
{
i--;
print(i);
if (i <= 0)
{
GUIText.instance.score++;//调用
Destroy(this.gameObject);
}
}
}
//我方飞机中的调用
void OnTriggerEnter(Collider col)
{
if (col.tag == "EnemyRocket")
{
i--;
GUIText.instance.lifeTime = i;//调用
print(i);
if (i <= 0)
{
Destroy(this.gameObject);
}
}
}
飞机大战中,敌方飞机不可能只有一架,还会出现跟多的飞机,下面我们就来实现敌方飞机一波一波的出现,其中用到了数组和协程的知识点。
完成如图效果:
在敌方飞机中添加代码,代码如下:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour {
//1、对象数组 2、协程
public GameObject[] enemy;//声明对象数组
int number = 5;
void Start () {
StartCoroutine("Spawn");
// StartCoroutine(Spawn());//也可以,两种写法
}
void Update () {
}
IEnumerator Spawn() {
yield return new WaitForSeconds(1f);//开始等待5秒
while (true)
{
while (number > 0)
{
GameObject go = enemy[Random.Range(0, enemy.Length)];
Vector3 pos = new Vector3(Random.Range(-4, 4), -10.98809f, -14.5748f);
GameObject.Instantiate(go, pos, transform.rotation);
yield return new WaitForSeconds(2f);//每隔两秒克隆1个
number--;
}
number = 5;
yield return new WaitForSeconds(4f);//每隔4秒开始下一波
}
}
}
这个代码中我们定义的是对象数组,所以在属性中不要忘了下一步:
更多精彩请点击 http://www.gopedu.com/article
今天学习了新的内容:GUI。
GUI控制利用一类被称为OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI函数可以在每帧调用,就像Update()函数一样。
GUI可以在unity界面中添加文本和按钮等。
下面用GUI来完善一下做过的飞机大战游戏,可以让它在游戏界面中显示我方飞机的生命值和得分。
完成如图的效果:
代码如下:
using UnityEngine;
using System.Collections;
public class GUIText : MonoBehaviour {
public int lifeTime = 0;//我方生命值
public int score = 0;//得分
public static GUIText instance;//管理对象初始化,自身定为静态变量
public Player player;//获取我方飞机
void Start()
{
instance = this;
player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
}
void OnGUI()
{
lifeTime = player.i;
GUI.Label(new Rect(20, 30, 100, 20), "生命值为:" + lifeTime);
GUI.Label(new Rect(20, 70, 100, 20), "分数:" + score);
}
}
然后再我方飞机和敌方飞机的脚本中调用:
//敌方飞机中的调用
void OnTriggerEnter(Collider col)
{
if (col.tag == "Myrocket")
{
i--;
print(i);
if (i <= 0)
{
GUIText.instance.score++;//调用
Destroy(this.gameObject);
}
}
}
//我方飞机中的调用
void OnTriggerEnter(Collider col)
{
if (col.tag == "EnemyRocket")
{
i--;
GUIText.instance.lifeTime = i;//调用
print(i);
if (i <= 0)
{
Destroy(this.gameObject);
}
}
}
飞机大战中,敌方飞机不可能只有一架,还会出现跟多的飞机,下面我们就来实现敌方飞机一波一波的出现,其中用到了数组和协程的知识点。
完成如图效果:
在敌方飞机中添加代码,代码如下:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour {
//1、对象数组 2、协程
public GameObject[] enemy;//声明对象数组
int number = 5;
void Start () {
StartCoroutine("Spawn");
// StartCoroutine(Spawn());//也可以,两种写法
}
void Update () {
}
IEnumerator Spawn() {
yield return new WaitForSeconds(1f);//开始等待5秒
while (true)
{
while (number > 0)
{
GameObject go = enemy[Random.Range(0, enemy.Length)];
Vector3 pos = new Vector3(Random.Range(-4, 4), -10.98809f, -14.5748f);
GameObject.Instantiate(go, pos, transform.rotation);
yield return new WaitForSeconds(2f);//每隔两秒克隆1个
number--;
}
number = 5;
yield return new WaitForSeconds(4f);//每隔4秒开始下一波
}
}
}
这个代码中我们定义的是对象数组,所以在属性中不要忘了下一步:
更多精彩请点击 http://www.gopedu.com/article
相关文章推荐
- unity基础开发--学习EZGUI教程
- unity学习之GUI基础2
- unity基础开发--学习EZGUI教程
- C#编写Unity基础GUI之控件布局
- 图形用户界面入门:EasyGui - 零基础入门学习Python035
- Unity学习笔记5:多人游戏基础
- Unity学习笔记5:多人游戏基础
- Unity学习系类笔记5:多人游戏基础
- C#编写Unity基础GUI之控件-2
- unity 基础学习 transform
- Unity学习笔记5:多人游戏基础
- Unity2.0学习笔记-Unity2.0基础-如何配置Unity2.0容器-运行时配置
- Unity2.0学习笔记-Unity2.0基础-HelloWorld
- 黑马程序员--GUI界面编程--java学习日记9(基础知识)
- OpenCv基础学习笔记之一[highgui_c.h]
- 黑马程序员 java基础24天 GUI编程学习总结
- Unity 物理引擎学习笔记。。很基础。很实用哦。。。
- Unity GUI基础知识。。。。。
- unity基础开发--学习笔记
- [unity基础知识]之Unity3d之Vector3 学习与应用