求助,关于unity5的html5 button事件件

2386人阅读
编程(51)
版本:Unity5.2.1
1、Button 事件
(1)新建一个B
(2)新建一个脚本;
并在脚本中,写入按钮被点击调用的一个方法,如
& public void OnMyButtonClick()
& & & & eastctl.IsControledBy_FieldOfView = !eastctl.IsControledBy_FieldOfV
(3)将事件方法赋给B
点击“+”, 把挂事件方法的物体赋给物体,并找到需要调用的事件方法;
2、代码改变Text内容
在用代码调用Text内容时,发现没法引用public Text,“Text&类型;
此时需要引用using UnityEngine.UI; 这时就可以引用“Text&类型了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:39304次
排名:千里之外
原创:42篇
转载:22篇
(2)(1)(1)(1)(4)(1)(2)(2)(11)(10)(4)(1)(4)(3)(3)(3)(6)(6)
just a girl like computer, 3d graphics, drawing,thinking and dreaming...(:下次自动登录
现在的位置:
& 综合 & 正文
Unity插件EasyButton中委托事件的注册和调用
//消息传递Message
//时间委托delegate&&event
Easy Button事件监听的两种方式
(1).Message
图(1)事件注册
图(2)定义符合SeedMessage需要的方法
①SeedMessage
向游戏物体发消息,遍历所有脚本中查找符合的定义的方法
②SeedMessageUpwards
向上父类遍历
③BroadcastMessage
向下子类遍历
(2).Event
调用注册上的方法,是固定的(已知的),会直接调用,速度比较快;但量较大;
弄清C#的委托用法:委托是方法的集合,可以把方法定义成变量来用;
委托可以添加一堆方法过来(叫做注册)
1?使用委托定义变量的类型和返回值(可为空void),然后使用事件来调用方法;
public delegate void ButtonUpHandler(string buttonName);
给变量(委托的方法)赋值,相当于方法是动态的
在中可以调用赋值的方法(类似于函数指针)
2?根据委托定义相应的事件(事件注册的方式),如下,拿到ButtonUpHandler委托On_ButtonDown事件后,去添加符合ButtonUpHandler这个方法变量类型和返回值的这种On_ButtonDown格式的方法
public static event ButtonUpHandler On_ButtonD
使用符合参数类型
委托可以注册/注销很多方法并进行调用;使用委托来定义和管理事件
3?public static event ButtonUpHandler On_ButtonD是一个静态事件,直接调用EasyButton.On_ButtonDown +=DownMethod;
相当于一个注册过程
(想象成On_ButtonDown是一个集合,+=往这个集合里面添加方法,比如我们定义的DownMethod(因为此方法中返回值和参数类型和EasyButton.On_ButtonDown事件中返回值和参数类型一致))
void start(){
EasyButton.On_ButtonDown +=DownM
void DownMethod(string btnName){
print(btnName+"DownMethod");
void PressMethod(string btnName){
print(btnName+"PressMethod");
void UpMethod(string btnName){
print(btnName+"UpMethod");
4?EasyButton控制此事件,EasyButton触发的时候,他控制的事件都会被调用,在事件(如EasyButton.On_ButtonDown事件)中注册的方法(如DownMethod方法)都会被调用
??怎么去用委托?
首先找到event事件,然后找到事件名称;在向上找到事件的定义delegate,包括参数类型和返回值;然后定义一个和委托一样参数类型和返回值的自定义方法,就可以使用静态的事件名称(看做一个集合)来注册上(如
EasyButton.On_ButtonDown +=DownM)
6?事件是谁定义的,就由谁触发;EasyButton.On_ButtonDown +=DownM中我们写好的自定义的DownMethod方法,注册到On_ButtonDown事件,此事件是由EasyButton定义,所以我们自定义的方法注册后也由EasyButton触发
7?事件注册后,不使用时请注销;不然脚本不存在的时候,事件还是被注册上了,会造成垃圾隐患
void OnEnable(){
EasyButton.On_ButtonDown +=DownM
void OnDisable(){
EasyButton.On_ButtonDown -=DownM
二、虚拟摇杆JokStick
public class JoyStickTest : MonoBehaviour {
public EasyJ
void Update(){
print(joystick.JoystickAxis);
三、EasyTouch触摸事件
触发方式(1)在EasyTouch属性面板启用消息广播机制,通过General properties-》Broadcast message启用并指定一个游戏对象,通过指定Receiver来监听事件:创建一个脚本
在脚本中写一个这个方法,并把这个脚本所在的游戏物体指定给EasyTouch
public class EasyTouchTest1 : MonoBehaviour {
// Use this for initialization
void On_TouchStart(Gesture g){
print("StartPosition "+g.position);
根据方法(如 On_TouchStart)名字触发事件,检测事件是全局的(全屏幕,只要跟事件匹配上)
触发方式(2)通过脚本注册事件直接进行监听
需要禁用消息广播机制General properties-》Broadcast message
public class EasyTouchEventTest : MonoBehaviour {
void OnEnable () {
EasyTouch.On_TouchStart +=On_TouchS
void OnDisable(){
EasyTouch.On_TouchStart -=On_TouchS
void On_TouchStart(Gesture g){
print("Eventposition"+g.position);
(3)在指定物体上使用手势才能起作用,使用Auto Select
1、创建一个cube,代码移到cube上,然后把cube指定一个新的layer层(定义层名为GUILayer),回到EasyTouch对象属性面板中启用自动选择Enable auto-select,然后选择我们之前创建的GUILayer层
2、启用消息广播机制General properties-》Broadcast message,但不需要指定gameobject对象
注:不能在start方法写注册事件,因为指定touch的物体可能是动态创建出来的,在start()可能就无法注册
&&&&推荐文章:
【上篇】【下篇】匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 unity button触发事件 的文章

 

随机推荐