可拖动FPS显示框(UGUI)
简介
本来是想往上找一个可拖动FPS显示框的(我记得以前有人写过),然而搜了一个多小时都没搜到,索性自己写了一个,花费不到20分钟,看来还是自己动手丰衣足食啊 o(╯□╰)o
效果
上下的Toast不在本blog介绍范围,我点他们只是为了证明按钮事件不冲突而已~~
思路
虽然超级简单,还是说一下嘛
1.按钮点下的时候设置物体缩放(好看点而已),并重置锚点为中心(方便拖动对齐)
2.拖动过程中,让物体位置等于鼠标位置即可(由于用的UGUI,有Canvas,不用考虑Z轴)
3.鼠标抬起时还原各项参数即可
(锚点可以不还原,因为你一旦拖动了物体,原来的对齐其实已经偏了,当然有后续操作的可以考虑还原)
项目配置
1.一步完成,直接看图吧
代码
using UnityEngine;
using UnityEngine.UI;
public class LTFPSPanel : MonoBehaviour
{
public Text fpsText;
private float mUpdateInterval = 1f;//设定更新帧率的时间间隔为1秒
private float mAccum = .0f;//累积时间
private int mFrames = 0;//在_updateInterval时间内运行了多少帧
private float mTimeLeft;
private static Vector3 ON_DRAG_SCALE = new Vector3(1.2f, 1.2f, 1.2f);
private static Vector3 NORMAL_SCALE = Vector3.one;
private static Vector2 ON_DRAG_PIVOT = new Vector2(0.5f, 0.5f);
private RectTransform mRectTransform;
void Awake()
{
mRectTransform = GetComponent<RectTransform>();
}
void Start()
{
if (null == fpsText)
{
throw new System.Exception("没有绑定Text组件");
}
mTimeLeft = mUpdateInterval;
}
void Update()
{
mTimeLeft -= Time.deltaTime;
//Time.timeScale可以控制Update 和LateUpdate 的执行速度,
//Time.deltaTime是以秒计算,完成最后一帧的时间
//相除即可得到相应的一帧所用的时间
mAccum += Time.timeScale / Time.deltaTime;
++mFrames;//帧数
if (mTimeLeft <= 0)
{
float fps = mAccum / mFrames;
string fpsFormat = System.String.Format("{0:F2}", fps);//保留两位小数
fpsText.text = fpsFormat;
mTimeLeft = mUpdateInterval;
mAccum = .0f;
mFrames = 0;
}
}
public void OnPointerDown()
{
mRectTransform.pivot = ON_DRAG_PIVOT;
transform.position = Input.mousePosition;
this.transform.localScale = ON_DRAG_SCALE;
}
public void OnPointerUp()
{
this.transform.localScale = NORMAL_SCALE;
transform.position = Input.mousePosition;
}
public void OnDrag()
{
transform.position = Input.mousePosition;
}
}
总结
null
可拖动FPS显示框(UGUI)的更多相关文章
- 用canvas实现鼠标拖动绘制矩形框
需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.mi ...
- Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框
实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚 ...
- 使用react-tooltip实现鼠标悬浮显示框详细记录
前段时间遇到的一个需求,要求鼠标悬停显示使用描述, 用到了react-tooltip插件,今天写一个总结 先看效果(为了方便参考,用的是原始样式): 文档参考地址: https://www.npmjs ...
- web拖动条显示
<!DOCTYPE html"> <html> <head> <title>滚动条拖动评分的JS效果</title> <st ...
- win8.1下右下角出现大小写切换状态显示框解决方案
HKEY_LOCAL_MACHINE\SOFTWARE\Cambridge Silicon Radio\Harmony\Default双击右侧 OSD 将键值改成0 重启机器 成功关闭显示
- windows pyspider WEB显示框太小解决方法
环境:windows7 + chrome + pyspider 解决方法: WEB预览框过小的原因在于页面元素的css属性height被替换为60px: CSS文件所在地方:C:\Users\Admi ...
- css文本内容大于内本显示框设置其显示方式
1. <style type="text/css"> .text-ellipsis{ overflow: hidden;//隐藏滚动条 white-space: now ...
- 设置textview显示框内容不可编辑不可选择。
f1textview.allowsEditingTextAttributes=NO;////////////设置不可编辑不能用这个,得用下面的一个 textView.editable=NO;//设置可 ...
- html 居中的内容显示框
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 菜鸟教程之工具使用(十)——用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- Linux环境的PHP执行
/usr/local/php5/bin/php -c /var/spool/php.ini -q /var/spool/auto.php
- WWDC2016-session401-CodeSign大改版
自动签名机制和手动签名都明显看起来很好用. 自动签名有log 手动签名有具体的错误提示信息. session401 Xcode Signing. 亲,你的眼睛好大 相声演员吗? Yeah,You ar ...
- ubuntu-14.04.x-desktop-amd64.iso:安装Oracle11gR2
特点: 使用ubuntu-14.04.x-desktop-amd64.iso liveCD模式 + Casper-rw 本地文件 不降级默认的gcc版本,(liveCD 自带默认为 gcc 4.8): ...
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
Tks: http://www.cnblogs.com/yjmyzz/archive/2009/11/23/1608818.html 20150801 add: http://www.cnblogs. ...
- arcgis ERROR:000824 该工具未获得许可
当时上面还说点击000824进入帮助文档,它说是由于扩展功能未勾选,于是我勾上,结果还是不行,后来它说可能是没有许可,于是我把license重新授权了一遍,结果,还是不行 其实,解决方法是在catal ...
- location.hash属性介绍
location.hash属性介绍 例如URL: http://wwww.a.com/index#rhythmk 通过location.hash 我们将获取到 #rhythmk. 默认浏览器会滚动至i ...
- ios 同步Get请求的实现
//第一步,创建URL NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/search?term=微信&enti ...
- mongodb备份恢复
注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...
- 从function前面的!想到的
最近没事喜欢看看,一些js库的源码,结果发现库前不是加一个!就是加+或者一个(),心中猜出个大概知道这个是让函数自动执行,可是这么多符号达到同一个目的,原理是什么呢,下面做一下剖析: 先从IIFE开始 ...