public void UserClickedRight()
{
Debug.Log("click right whoo!");
}
和左一样 . 在编辑器中转到右侧 Button . Just drag the script to it and select UserClickedRight. 如果您以前没有看过,可以在数以百万计的教程中解释这一点 . 这是Unity的绝对基本机制和范例 - 在编辑器中将某个脚本拖动到"slot" .
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
现在很容易的部分 . 您只需键入Unity将在事情发生时为您运行的两个例程 .
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
public void OnPointerDown(PointerEventData data)
{
Debug.Log("holy! someone clicked down!")
}
public void OnPointerUp(PointerEventData data)
{
Debug.Log("whoa! someone clicked up!")
}
}
现在你所要做的就是 put that script on the Button . 这样做并给它一个测试 .
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
[System.NonSerialized] public bool mouseIsDownRightNow;
public void OnPointerDown(PointerEventData data)
{
mouseIsDownRightNow = true;
}
public void OnPointerUp(PointerEventData data)
{
mouseIsDownRightNow = false;
}
}
您可以从另一个脚本或任何您想要的任何脚本访问该变量 .
如果要在按钮关闭时运行例程,请添加以下内容:
void Update()
{
if (buttonIsDownRightNow) WhileButtonIsDown();
}
private void WhileButtonIsDown()
{
Debug.Log("THE #$@#$ BUTTON IS DOWN!!!!!!!! WHOA!");
}
试试看,然后观看控制台当你按住按钮向上和向上 .
以下是按钮关闭时不断增加值的示例:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
[System.NonSerialized] public bool buttonIsDownRightNow;
private int countSomething;
public void OnPointerDown(PointerEventData data)
{
buttonIsDownRightNow = true;
}
public void OnPointerUp(PointerEventData data)
{
buttonIsDownRightNow = false;
}
private void WhileButtonIsDown()
{
++countSomething;
}
void Update()
{
if (buttonIsDownRightNow) WhileButtonIsDown();
Debug.Log("value is now " +countSomething.ToString());
}
}
2 回答
Klausar,你要找的是.........
A BUTTON(!!!)
就这么简单!
点击“添加画布” . (您很可能希望“缩放到屏幕大小” - 选择该选项 . )
点击“添加按钮” .
没有“三”..去喝酒 .
在你的代码中,有一个例程
和左一样 . 在编辑器中转到右侧
Button
. Just drag the script to it and select UserClickedRight. 如果您以前没有看过,可以在数以百万计的教程中解释这一点 . 这是Unity的绝对基本机制和范例 - 在编辑器中将某个脚本拖动到"slot" .难以置信的简单吧?!
您不需要达到触摸处理水平即可实现此目的 .
现在你问,“当按下按钮时”怎么样?
这非常简单,您只需要了解Unity“事件”系统的一些事项 .
请注意,在“按钮”中,Unity在“检查器”面板中“为您提供”指向“OnClick”的链接 .
你完全知道如何使用它,对吧?因此,为了方便起见,Unity将这一个“放在面板中”,因为您在大多数按钮上使用它 .
好消息是
Button
已 other terrific events, you can use .你问,这些其他令人敬畏的事件是什么?总是只是看看doco找出:http://docs.unity3d.com/ScriptReference/UI.Button.html
正如你所看到的,有很多很棒的事件,如
OnPointerDown
和OnPointerUp
. 这就是你想要的 .再看一下这张图片......
重复一遍,Unity "give you"
OnClick
就在编辑器中 .你可能会说"well, why aren't the others in there?"没有神秘感 - 只是
OnClick
被如此普遍地使用 . 在一两年内说,Unity发现每个人都一直使用OnPointerDown
,每个人都总是大吼大叫,把它添加到那里 . 在这种情况下,他们可能会在那里添加它以方便使用 . 相反,你可以想象他们可能根本就没有把OnClick
放在那里,也许是为了让那个面板更小 .这一点是
OnClick
,OnPointerDown
等等是 all events, just the same - 只是因为它发生了它们在那个面板上有"thrown in"OnClick
,因为它很受欢迎 .事实上,有些人会说这有点令人困惑:如果Unity没有把
OnClick
放在那里,那么你只是要解释一下,对吧?您必须执行以下操作,只是为了使用OnClick
...看看我的意思?所以使用其他事件非常简单,你就是这样
1,创建一个引用所需事件的脚本,
和,
2,你把那个脚本放在有问题的按钮上......
就这么简单 .
所以 . 您将使用Unity的事件系统,因此您必须这样做:
下一个, . 你知道脚本通常会像这样开始......
“MonoBehaviour”部分只是意味着它是一个c#脚本,它将“驱动一个GamObject”,它将是“GameObject的一部分” . 但在这种情况下,我们必须进一步警告引擎您将使用向下和向上点击事件 . 所以你加上这个 .
所以 . 到目前为止,我们有这个
现在很容易的部分 . 您只需键入Unity将在事情发生时为您运行的两个例程 .
现在你所要做的就是 put that script on the Button . 这样做并给它一个测试 .
所以不要忘了,事实上,你可以把它放在任何你喜欢的按钮上,让按钮按照这种方式工作 . (通常你有这样的脚本,你可以在项目中的每个按钮上放置,或者在预制件上放置 . )
接下来,点击欧比旺,看看我们到目前为止的位置!
最后,听起来你想要“按下按钮时”做一些事情 . 这只是一个普通的编程问题 - 你有一个布尔值,当按钮上下移动时你可以打开和关闭它 . 我们开始做吧 .
您可以从另一个脚本或任何您想要的任何脚本访问该变量 .
如果要在按钮关闭时运行例程,请添加以下内容:
试试看,然后观看控制台当你按住按钮向上和向上 .
以下是按钮关闭时不断增加值的示例:
这里的所有都是它的 . 一旦你真正了解Unity中的事件,就没有更多要理解的了 .
唯一的其他重要主题是Mecanim,着色器书写,触摸,协同程序,线程,PhysX,原生插件,精灵,网络,动态网格,导航,VR,AR,动画,反向运动学,粒子,地形,IAP,照明,烘焙,阴影,MMP,角色控制器......和音频 . 请享用!
你应该热心阅读this . 你要做的事实上很简单:
编辑1:此代码现在检查正在按下哪个图像
编辑2:添加了多点触控支持