一、UGUI系统:

Canvas:画布,所有的button,text,image等等都需要在有canvas的基础上。

Button:按钮,使其生效的方式是,加入监听,加入监听的方式是在onClick()点击加号,并导入相应的脚本,和控制这个button的函数

在代码中控制ugui的方法

不论是button text image如果只是单纯的去控制他们自己

在代码中定义

Public Button ××××(自定义名字)

Public Text ××××(自定义名字)

其他的类似,

然后将其拖入相应的组件中即可

然后有一些基本的代码控制

Button.enab(使这个button失效,但它图像依然在)

如果我们要使这些东西消失,那就需要用的另一个

Public Gameobjectbutton

在前面定一个游戏对象来控制

这样使用

Button.Setactive(false)就能使其隐藏

当然在unity界面我们仍然需要将其拖入

在定义的button的方法中

我们是否点击到button是通过button属性上的text来进行判断的

首先要定义一个string select_name的一个字符串来接收

然后在button方法中

需要使用到

select_name=EventSystem.current.currentSelectedGameObject.name;

后面用

select_name进行一个逻辑判断就行了。

 

二、代码

1.在写代码的时候,特别是ugui中button,text等等为其命名时千万要注意空格的问题。如果你发现你的button名字和代码的一样,在debug的时候却发现点击之后没反应,那你就要小心是不是button前后多了个空格

 

2.关于游戏的暂停,ui界面的控制

充分的利用bool值去解决这个问题

我们所使用的Time.timescale=0是让整个游戏的时间暂停,但是update函数依然在运行,所以要充分利用这一点

示例代码

使用键盘按键

这个要注意的是,我们要是用keydown这个属性,使你按下去的时候,这个按键只被检测一次,如果用key的话因为update循环的速度非常快,就无法检测到。

示例代码:

按下B键使游戏暂停

bool isPause;
if (Input.GetKeyDown(KeyCode.B)) {
            if (!isPause) {
                BulletsButton.SetActive (true);
                HealthButton.SetActive (true);
                Time.timeScale = 0;
              } 
            else  {
                Time.timeScale = 1;
                BulletsButton.SetActive (false);
                HealthButton.SetActive (false);
            }
            isPause = !isPause;

            }用button按钮实现
if (istrue) {
                Time.timeScale = 0;
                istrue = !istrue;
            }

这个代码使if语句中的东西在update中只执行一次

然后在button实现的是函数中定义一个

Time.timescale=1;

点击button就能实现这个功能了

三、关于碰撞器和触发器

触发信息检测:

  1.MonoBehaviour.OnTriggerEnter(Collidercollider)当进入触发器

  2.MonoBehaviour.OnTriggerExit(Collidercollider)当退出触发器

  3.MonoBehaviour.OnTriggerStay(Collidercollider)当逗留触发器

 

碰撞信息检测:

  1.MonoBehaviour.OnCollisionEnter(Collisioncollision) 当进入碰撞器

  2.MonoBehaviour.OnCollisionExit(Collisioncollision) 当退出碰撞器

  3.MonoBehaviour.OnCollisionStay(Collisioncollision)  当逗留碰撞器