UnityEditorWindow做一个TimeLine的滑动块
UnityEditorWindow做一个TimeLine的滑动块
最近在做一个基于TimeLine的动画编辑器,在制作TineLine滑动条时遇到问题,网上查了好久,试了好多GUI组件都不满意。
最后在一个开源unity TimeLine插件中找到合适的方法。 地址:https://github.com/sassembla/TimeFlowShiki .
大致上是将Window当做一个滑动块,可以监听到鼠标Event.Drag的事件,然后移动滑块位置。
直接上代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine; public class TimeLineWindowTest : EditorWindow
{
public static TimeLineWindowTest window;
public int id = 1221;
public GUISkin skin;
[MenuItem("Window/TimeLineWindowTest")]
static void OpenWindow()
{
window = GetWindow<TimeLineWindowTest>();
}
Rect timeLineRect;
Vector2 mouseLastPos = Vector2.zero;
Vector2 mousePos = Vector2.zero;
Rect trackRect = new Rect(200, 0, 150, 30);
private void OnGUI()
{
BeginWindows();
GUI.BeginGroup(new Rect(200, 0, position.width, position.height));
{
timeLineRect = new Rect(200, 0, position.width, 30);
GUI.Window(id, timeLineRect, CallBack, "TimeLine1", skin.window);
}
GUI.EndGroup();
EndWindows();
} private void CallBack(int id)
{
bool useEvent = false;
mousePos = Event.current.mousePosition;
Vector2 mouseDownPos;
switch (Event.current.type)
{
case EventType.MouseDown:
if (trackRect.Contains(mousePos))
{
mouseDownPos = mousePos;
useEvent = true;
} break;
case EventType.MouseDrag:
if (trackRect.Contains(mousePos))
{
float xOffset = mousePos.x - mouseLastPos.x;
trackRect.x += xOffset;
Debug.Log("拖拽");
useEvent = true;
}
break;
}
DrawTracks(trackRect); GUI.DragWindow();
if (useEvent)
{
Event.current.Use();
} }
private void Update()
{ mouseLastPos = mousePos;
} private void DrawTracks(Rect timeLineRect)
{
GUI.Box(timeLineRect, "265645", skin.box); }
}
注意一点Update(),只要是继承自EditorWindow中都可以调用每帧执行。
核心就这些。很简单,是不是!
运行效果如下:
UnityEditorWindow做一个TimeLine的滑动块的更多相关文章
- 小程序做一个能够左右滑动切换的多tab页面
主要原理:使用 <swiper> 和 <scroll-view> 组件 代码片段: https://developers.weixin.qq.com/s/mLx4FWmF757 ...
- Qt 做一个类似微信滑动聊天界面的demo
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/115889 ...
- 创业成本?亲身经历告诉你做一个app要多少钱
导语:作为一名苦逼的移动互联网创业者,被外行的朋友们问及最多的问题是“做一个网站需要多少钱?”或者“做一个APP需要多少钱?” 作为一名苦逼的移动互联网创业者,被外行的朋友们问及最多的问题是“做一个网 ...
- iOS:步进UIStepper、滑动块UISlider、开关UISwitch的基本使用
步进UIStepper.滑动块UISlider:当它们作为事件,被触发时,它们的值会发生改变.正因为如此,触发该事件时,可以一张一张翻阅浏览图片,,,, 步进UIStepper: @property( ...
- 程序员被老板要求两个月做个APP,要不比京东差,网友:做一个快捷方式,直接链到京东
隔行如隔山,这句话说得一点都没错.做一个程序员,很多人都会羡慕,也有很多人会望而却步. 作为一个外行人,你别看程序员每天坐在电脑前敲敲键盘打打代码,以为很简单,其实啊也只有程序员自己明白,任何一个看似 ...
- 有了lisk,为什么我们还要做一个Asch?
0 前言 首先要声明一点,我们和我们的一些朋友都是lisk的投资人和支持者,我们也相信lisk会成功. 事实上,lisk已经成功了一半,目前在区块链领域融资金额排行第二,仅次于以太坊. 那为什么我们还 ...
- E时代主机,其实做一个小虚拟主机还是不错的
http://www.idcen.com/ 做微信没有网上测试地址,找了一下发现以前用过的.记录一下.一个100m的虚拟主机需要三四十块钱,做微信,做一个小型网站还是够用的,就是mysql有点问题,不 ...
- 做一个聪明的.net程序员
最近看了传智播客(http://net.itcast.cn/)的.net培训视频,感受颇深,忍不住要把感受写下来跟网友分享一下. 我从接触.net到现在已经至少过去了三五个年头,用.net也已经做了若 ...
- 如何做一个导航栏————浮动跟伪类(hover)事件的应用
我们先说一下伪类选择器的写法: 写法:选择器名称:伪类状态{}4 常见伪类状态: 未访问:link 鼠标移上去:hover 激活选定:active 已访问:visited 获得焦点的时候触发:focu ...
随机推荐
- 使用scrapy框架模拟登录
scrapy模拟登录 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True 或# CO ...
- 水题挑战2 :NOIP提高组 2011 聪明的质监员
小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从\(1\) 到 \(n\) 逐一编号,每个矿石都有自己的重量 \(w_i\) 以及价值 \(v_i\) .检验矿 ...
- yum安装出现被锁定的报错
问题:在使用#yum install XXX 命令的时候,出现yum.pid 已被锁定的提示,无法进行yum 安装 解决: 使用# rm -f /var/run/yum.pid 命令删除该进程即可
- 关于ubuntu出现的一些问题的解决方法
1. (1)现象: dpkg: 处理软件包 linux-image-4.15.0-36-generic (--configure)时出错: 子进程 已安装 post-installation 脚本 返 ...
- 09-jQuery案例:爱好选择器
爱好选择器HTML 1 <!DOCTYPE html> 2 <head> 3 <meta charset="UTF-8"> 4 <titl ...
- 释放至强平台 AI 加速潜能 汇医慧影打造全周期 AI 医学影像解决方案
基于英特尔架构实现软硬协同加速,显著提升新冠肺炎.乳腺癌等疾病的检测和筛查效率,并帮助医疗科研平台预防"维度灾难"问题 <PAGE 1 LEFT COLUMN: CUSTOM ...
- mybatis 字符串比较 == 用法
private String deptLevel; <when test='deptLevel=="3"'> 正确 <when test="deptLe ...
- centos7安装数据库 (系统包含预装环境mariadb)
查看系统是否安装了MySQL,有些没安装但是有路径,那是因为系统安装了mariadb-libs,对应的配置文件目录:/etc/my.cnf(下面就根据mariadb来安装mysql) 查看系统预装ma ...
- 钉钉自定义机器人webhook
这篇博文主要讲的是如何进行自定义定时发送一些text类的消息的自定义机器人.添加过程不细讲了. 首先我们需要拿到一个Hook地址,就是你在添加自定义机器人的时候有个,如图: 然后开始编写我们的脚本,我 ...
- python之路《八》装饰器
装饰器是个好东西啊 那么装饰器是个什么样的东西呢,他又能做些什么呢? 1.为什么装饰器 当我们一个程序已经构建完成,并且已经发布出去了,但是现在需要增加一个活动,例如淘宝给你发送一个今日优惠,或者开启 ...