最近用腾讯的GAutomator做Android版UI测试时,发现不能直观的看出点击的确切位置,于是我在Unity项目中新加入一个功能:点击屏幕时,在点击位置闪烁红点。具体步骤如下:
1. 在Canvas物体下新建一个空物体,暂且命名为Finger Pointer,添加Image组件,选择动画提示图片,我这里就选择一个小白点,把锚点放在左下角,设置合适大小。
将Canvas的Sort Order设置为高于其他Canvas,使动画在最上层始终显示。特别注意,在Inspector面板取消Image组件Raycast Target选项,否则点击按钮时由于动画画布遮住按钮而使按钮点击无效。
2. 继续给Finger Pointer添加Animator组件,在Assets任意文件夹下右键点击新建Animator Controller,命名为ClickedController,选择Animator组件的Controller为ClickedController。
3. 打开Animation窗口,选中Finger Pointer物体后,点击Create按钮新建动画,命名为ClickedAnimation。点击Add Property->Rec Transform,添加Scale,将时间线拖到中间某位置,在Inspector面板上调大Scale值,我开始时的Scale为0.3,所以这里我就设置为0.6了,点击播放动画按钮,可以看到放大缩小动画。
height="450" width="700" src="https://v.qq.com/txp/iframe/player.html?vid=j0808yob98j" allowfullscreen="true">
4. 继续点击Add Property->Image,添加Color属性,将时间线拖到中间放大节点处,在Inspector面板上将Image的颜色调为红色,点击播放动画按钮,可以看到Finger Pointer在在放大同时闪烁红色。
特别注意,在Inspect面板取消Loop Time选项,不然动画会重复播放。至此Animation制作完成。
height="450" width="700" src="https://v.qq.com/txp/iframe/player.html?vid=w0808xjr98k" allowfullscreen="true">
5. 双击ClickedController,打开Animator窗口。在Animator窗口右键点击,新建Empty State,然后将ClickedAnimation拖拽到Animator窗口,右键点击ClickedAnimation,建立到New State的Transition。至此,Animator设置完成。
6.新建脚本FingerPointerController,拖拽到Finger Pointer物体上,附上如下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class FingerPointerController : MonoBehaviour
private Animator ClickedAnimator;
// Use this for initialization
void Start()
ClickedAnimator = GetComponent<Animator>();
// Update is called once per frame
void Update()
//在编辑器下测试
#if UNITY_EDITOR || UNITY_STANDALONE_WIN
transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);
if (Input.GetMouseButton(0))
ClickedAnimator.Play("ClickedAnimation");
//安卓版本测试
#elif UNITY_ANDROID
if(Input.touchCount > 0)
//可能有多指操作,取平均值
float xTotalPosition = 0.0f;
float yTotalPosition = 0.0f;
for (int i = 0; i < Input.touchCount; i++)
xTotalPosition += Input.GetTouch(i).position.x;
yTotalPosition += Input.GetTouch(i).position.y;
transform.position = new Vector3((float)(xTotalPosition / Input.touchCount), (float)(yTotalPosition / Input.touchCount), (float)0.0);
ClickedAnimator.Play("ClickedAnimation");
#endif
Editor下测试效果:
height="450" width="700" src="https://v.qq.com/txp/iframe/player.html?vid=l0808y5tgce" allowfullscreen="true">
最近用腾讯的GAutomator做Android版UI测试时,发现不能直观的看出点击的确切位置,于是我在Unity项目中新加入一个功能:点击屏幕时,在点击位置闪烁红点。具体步骤如下:在Canvas物体下新建一个空物体,暂且命名为Finger Pointer,添加Image组件,选择动画提示图片,我这里就选择一个小白点,把锚点放在左下角,设置合适大小。添加Animator组件,在Assets...
当我们需要制作动态炫酷科技感很强的UI时,美术一般会给我们提供一些序列图,这时候我们只需在程序里实现序列动画。
一.动画机
unity自带的帧动画机很方便,我们首先选择所要播放序列帧动画的Image,然后在Window下选择Animation,会弹出一个动画制动的界面,我们选择Create,然后进入如下界面:
我们按照如下添加动画控制的属性,
然后将我们美术给我们的序列图(要设置成2DandUI模式哦)拖入到动画帧面板里。
Unity自带的动画机播放序列帧动画很简单也很方便,但是有一定的局限性。因为我们不能很方便的控制动画的进程以及一些我们的要求。(虽然也可以,但是还是需要写代码,然后还
//////////////////////////////2015/08/22////////////////////////
/////////////////////////////by xbw//////////////////////////////
///////////////////////////环境
unity4.6.1//////////////////
/// <param name="go"></param>
/// <param name="angle">掉落的角度</param>
/// <param name="maxDistance">掉落的最大距离</param>
Unity实现按钮Button多功能(长按,双击)。
今天在做游戏的时候突发奇想,为什么Unity只有单击捏?例如:以前的iPhone的Home键双击就是任务栏,单击就是回到主界面。那么在Unity应该也能实现吧(好像没什么关联。。。),毕竟现在很多游戏都存在双击的功能。于是我去网络上查找并学习了下,把心得写在这,方便大家可以参考参考。
既然我们需要手动写一个按钮,那么就需要去监听GameObject的点击事件。这里我设置了几个Public变量,并且实现了几个鼠标事件的接口,具体的代码如下:
1. 使用Animation Events
在unity中,可以通过在animation clip中添加animation event来触发某些动作,例如在某个帧上调用某个函数。我们可以在动画的最后一帧添加一个animation event,来触发某个脚本中的函数,从而在动画结束后执行某些操作。
使用方法如下:
1) 在animation clip中选择最后一帧,右键点击,选择add event。
2) 在添加的event窗口中,选择需要触发的函数,并且设置触发的时间。
3) 在脚本中编写对应的函数,并且在相应的场景中添加一个按钮,点击按钮时触发该函数。
2. 代码控制
在unity中,我们可以通过代码控制动画的播放和停止,通过监听点击事件来触发相应的动画播放。
使用方法如下:
1) 在脚本中添加一个UI.Button类型的变量,并且将该变量与相应的按钮对象绑定。
2) 编写OnClick函数,并且在该函数中判断是否需要播放动画,并且通过代码控制动画的播放。
3. 使用Animator
在unity中,我们可以使用Animator控件来控制动画的播放和停止,Animator控件是一个状态机,可以在不同的状态之间进行转换。
使用方法如下:
1) 在Animator窗口中,创建一个新的Animation State,将动画文件拖入对应的animation clip中。
2) 创建两个状态,并且设置相应的转换条件,在UI控件的点击事件中,改变状态即可。
以上三种方式都可以实现点击才开始动画,具体选择哪一种方式主要取决于具体情况和开发者的习惯。
2)it指向点1,3在1,2左边,满足
3)it指向点2,4在2,3右边,不满足,因此删除中间点3,it回退到点1
4)it指向点1,4在1,2右边,不满足,因此删除中间点2,it回退到点p
5)it指向点p,5在p,1左边,满足
C++ STL源码分析——一个万用的 hash function
缘客_ql:
C++ STL源码分析——一个万用的 hash function
bodybo:
C++ STL源码分析——一个万用的 hash function
缘客_ql: