一、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) 当逗留碰撞器