为了使工具更人性化,我又在每个status的text上绑了个可以拖拽实现值改变的脚本,但是不知道为啥rotx那个值越过+-90范围后连续修改就会产生抖动的现象,试了很多方法也没能弄好,不过实际用起来问题应该不大。

  不过拖拽时鼠标碰到屏幕边缘就动不了了,于是我想像unity那样可以让鼠标出现在屏幕的另一边,这样就拖拽起来就更加的方便。

  关于如何实现该功能请看完下列教程:

  1.unity中锁定鼠标移动&&隐藏鼠标&&强制是鼠标移动到某一位置

  2.C# 鼠标光标到达屏幕边缘后从另一边缘出现

  3.在unity中添加System.Windows.Forms引用和注意事项,其中第三部修改Edit是在Unity里修改,不要像我一样在Visual Studio里弄半天都找不到 Project Settings在哪T_T...

  做完上面这几步后可能还会有这样的错误: error CS0012: The type `System.Drawing.Rectangle' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'



  像教程3那样在该文件夹下找到System.Drawing.dll文件并拖到plugins文件夹下即可。



  效果如下:



  不过可能很少有人会发现这个功能,所以我又加了按钮可以让用户通过点击按钮来改变值,不过必须点击一次才能改变一下所以显得很蠢。长按按钮来改变的方式貌似有点难,不会。



  刚刚闲来无事看unity关于eventSystem的视频教程的时候无意中看到了一个叫作Event Trigger的东西,利用它提供的PointerDown和PointerUp就能够轻松响应鼠标长按按钮事件:



  给要实现长按功能的组件添加一个EventTrigger,添加这两个Event然后把组件丢进去,调用组件绑定的自己写的脚本里的方法。我的脚本写的关键代码如下:

void Update () {
if (ifPointerDown)//鼠标按在按钮上
{
float delta = speed;
//Debug.Log("name:"+transform.name);
if (transform.name.Equals("ButtonDec"))
delta = -speed;
if (inputField.interactable)
inputField.text = (float.Parse(inputField.text) + delta).ToString();
}
}
public void PointerDown()
{
ifPointerDown = true;
}
public void PointerUp()
{
ifPointerDown = false;
}

  这样就能实现长按按钮改变输入框的值功能了!按钮也不一定得是按钮,可以是别的UI组件。

3dContactPointAnnotationTool开发日志(二十)的更多相关文章

  1. 3dContactPointAnnotationTool开发日志(十二)

      因为ReferenceImage的锚点是固定的左下角,缩放时controller面板也会跟着动.为了使Scale的时候controller上的slider不会远离指针,于是把controller固 ...

  2. 仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法

    转载请说明原出处,谢谢~~ 上篇日志说明了怎么让自定义控件响应右键消息.之后我给主窗体的标题栏增加右键响应,观察原酷狗后可以发现,在整个标题栏都是可以响应右键并弹出菜单的.应该的效果如下: 本以为像上 ...

  3. 仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)

    转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出 ...

  4. 仿酷狗音乐播放器开发日志二十五 duilib右键事件的不足的bug修复

    转载请说明原出处,谢谢~~ 虽然仿酷狗的各个菜单早就写好了,但是一直没有附加到程序里.今天把菜单和播放列表控件关联时发现了问题. 和播放列表相关的菜单有三个,分别是每个音乐项目控件相关的菜单.分组的菜 ...

  5. 3dContactPointAnnotationTool开发日志(十九)

      增加了输出接触点信息到文件功能.

  6. 3dContactPointAnnotationTool开发日志(十八)

      今天实现了tab效果,按tab键可以在status面板的各个输入框内来回切换,参考Unity3D - UGUI实现Tab键切换输入框.按钮(按Tab键切换高亮显示的UI)

  7. 3dContactPointAnnotationTool开发日志(十六)

      调了一上午才发现是把下面这个函数: private float DivideTriangle(int []triangle,out int []outTriangle,List<Vector ...

  8. 3dContactPointAnnotationTool开发日志(十五)

      有时候拖动一个窗口的时候可能直接拖出去了那就再也拖不回来只能reset重新来过:   于是开了个类成员变量在start里记录了一下panel的位置: var lp = panel.GetCompo ...

  9. 3dContactPointAnnotationTool开发日志(十四)

      貌似每次让用户手动输入文件路径太不人道了,于是参考Unity 实用教程 之 调用系统窗口选择文件或路径增加了让用户浏览文件的功能,点击输入框旁边的+就可以找到文件并加载进来:   貌似调整位置再计 ...

  10. 3dContactPointAnnotationTool开发日志(十)

      要是那几个状态栏不能拖动的话岂不是显得太呆板了,于是我又参考Unity官方视频教程学习了如何实现拖动状态栏的功能,还挺简单的.   比如说要拖动这个PanelStatus面板,我只让使用者通过拖动 ...

随机推荐

  1. VUE通过索引值获取数据不渲染的问题

    问题:vue里面当通过索引值获取数据时,ajax数据成功返回,但是在火狐下不渲染 解决:

  2. python 自定义函数表达式 拟合求系数

    https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html https://docs.scipy.org/doc/scipy/ ...

  3. VIM 键

    输入 vimtutor命令,可以打开Linux使用手册(基本使用). ***. 插入键: A: 行尾插入 a: 字符后面插入 i: 字符前面插入 I: 行首插入 r:只替换一次字符  R:一直替换,直 ...

  4. Multimodal Machine Learning:A Survey and Taxonomy 综述阅读笔记

    该笔记基于:Multimodal Machine Learning:A Survey and Taxonomy 该论文是一篇对多模态机器学习领域的总结和分类,且发表于2017年,算是相当新的综述了.老 ...

  5. 【SQL】字符串去空格解决方法

    一.表中字符串带空格的原因 1,空格就是空格. 2,控制符 显示为 空格. 二.解决方法 第一种情况,去空格的处理的比较简单,Replace(column,' ','') 就可以解决. 第二种情况,解 ...

  6. andriod 学习三 使用android资源

    3.1 android框架中有许多资源,包括布局,字符串,位图,图片....,使用资源之前需要在相应的资源文件中定义资源,然后编译程序时ADT将定义的资源转换成java类并给予唯一的id,而代码中需要 ...

  7. PLSQL集合类型

    PLSQL集合类型   --联合数组(索引表) /* 用于存储某个数据类型的数据集合类型 .通过索引获得联合数组中得值 如下例子: */ DECLARE CURSOR cur_chars IS SEL ...

  8. Maya Api笔记 - How polygons are handled internally

    为加深记忆和理解Maya的Polygon,尝试利用空闲时间翻译Maya Api文档相关章节. How polygons are handled internally - 多边形是如何在内部处理的

  9. labview--http协议数据交互

    最近接了一个项目,需求是要将采集到的数据,以以下要求上报,并且提供接口供上层系统下发指令. 采用restful的http协议进行交互: 输入输出参数皆为json体. 响应包含三部分: Code:业务码 ...

  10. leetcode-峰值检测

    寻找峰值     峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回 ...