简介

本来是想往上找一个可拖动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)的更多相关文章

  1. 用canvas实现鼠标拖动绘制矩形框

    需要用到jCanvas插件和jQuery. jCanvas下载:https://raw.githubusercontent.com/caleb531/jcanvas/master/jcanvas.mi ...

  2. Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框

    实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚 ...

  3. 使用react-tooltip实现鼠标悬浮显示框详细记录

    前段时间遇到的一个需求,要求鼠标悬停显示使用描述, 用到了react-tooltip插件,今天写一个总结 先看效果(为了方便参考,用的是原始样式): 文档参考地址: https://www.npmjs ...

  4. web拖动条显示

    <!DOCTYPE html"> <html> <head> <title>滚动条拖动评分的JS效果</title> <st ...

  5. win8.1下右下角出现大小写切换状态显示框解决方案

    HKEY_LOCAL_MACHINE\SOFTWARE\Cambridge Silicon Radio\Harmony\Default双击右侧 OSD 将键值改成0 重启机器 成功关闭显示

  6. windows pyspider WEB显示框太小解决方法

    环境:windows7 + chrome + pyspider 解决方法: WEB预览框过小的原因在于页面元素的css属性height被替换为60px: CSS文件所在地方:C:\Users\Admi ...

  7. css文本内容大于内本显示框设置其显示方式

    1. <style type="text/css"> .text-ellipsis{ overflow: hidden;//隐藏滚动条 white-space: now ...

  8. 设置textview显示框内容不可编辑不可选择。

    f1textview.allowsEditingTextAttributes=NO;////////////设置不可编辑不能用这个,得用下面的一个 textView.editable=NO;//设置可 ...

  9. html 居中的内容显示框

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  2. EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据  ...

  3. 表单验证Jquery扩展方法类

    /** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...

  4. 对于程序开发者看书(指实在的书而不是PDF)的好处。(个人看法而已)

    书是实在的东西.不同PDF.他能带你进入一种学习态度的环境 书上已经所列了知识点.看了.那些知识点就是你的. 第一次看,未必完全理解到里面的东西.说不定过几天,几周,几个月,甚至几年.再看.就有可能看 ...

  5. Azure SoftEther VPN

    装个vs2015,想装全组建还得爬墙… 曾经的 Azure OpenVPN 项目 (http://azure-openvpn.github.io/) 好几年木有更新 改用 SoftEther VPN ...

  6. zendStudio 10.5破解

    1.下载zendStudio 10.5(mac系统)     windows系统安装文件 并安装. 2.下载破解文件,并覆盖安装目录plugins同名文件,要注意版本. 3.启动程序,输入注册码: 3 ...

  7. Java 垃圾收集与内存回收

    垃圾收集(Garbage collection, GC) 收集原理: .引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加一:引用实效,就减一:它的问题是无法解决循环引用. 2 ...

  8. UNIX环境高级编程笔记之线程

    本章涉及到线程的一些基本知识点,讨论了现有的创建线程和销毁线程的POSIX.1原语,此外,重点介绍了线程同步问题,讨论了三种基本的同步机制:互斥量.读写锁.条件变量.

  9. slf4j日志系统

    slf4j:由外观模式实现,不是日志的解决方案,只是服务于各种各样的日志系统.可以让在应用部署的时候,选择合适的日志系统 slf4j + log4j : 配置日志文件:log4j.properties ...

  10. [转]make: 警告:检测到时钟错误。您的创建可能是不完整的。

    转自http://blog.csdn.net/maopig/article/details/6599660 我在make的时候也出现了同样的问题,不过不是什么大问题,这个不影响编译结果 分析原因可能是 ...