Unity3D研究院之Editor下监听Transform变化
美术有可以直接在Editor下操作Transform,我想去修正他们编辑的数值,所以我就得监听Transform。
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Reflection;
[CustomEditor(typeof(Transform))]
public class TransformEditor :Editor {
[InitializeOnLoadMethod]
static void IInitializeOnLoadMethod()
{
TransformEditor.onPostion =delegate(Transform transform) {
Debug.Log(string.Format("transform = {0} positon = {1}",transform.name,transform.localPosition));
};
TransformEditor.onRotation =delegate(Transform transform) {
Debug.Log(string.Format("transform = {0} rotation = {1}",transform.name,transform.localRotation.eulerAngles));
};
TransformEditor.onScale =delegate(Transform transform) {
Debug.Log(string.Format("transform = {0} scale = {1}",transform.name,transform.localScale));
};
}
public delegate void Change(Transform transform);
static public Change onPostion;
static public Change onRotation;
static public Change onScale;
private Editor editor;
private Transform transform;
private Vector3 startPostion =Vector3.zero;
private Vector3 startRotation =Vector3.zero;
private Vector3 startScale =Vector3.zero;
void OnEnable()
{
transform = target as Transform;
editor = Editor.CreateEditor(target, Assembly.GetAssembly(typeof(Editor)).GetType("UnityEditor.TransformInspector",true));
startPostion = transform.localPosition;
startRotation = transform.localRotation.eulerAngles;
startScale = transform.localScale;
}
public override void OnInspectorGUI ()
{
editor.OnInspectorGUI();
if(GUI.changed)
{
if(startPostion != transform.localPosition)
{
if(onPostion != null)
onPostion(transform);
}
if(startRotation != transform.localRotation.eulerAngles)
{
if(onRotation != null)
onRotation(transform);
}
if(startScale != transform.localScale)
{
if(onScale != null)
onScale(transform);
}
startPostion = transform.localPosition;
startRotation = transform.localRotation.eulerAngles;
startScale = transform.localScale;
}
}
}
|
- 本文固定链接: http://www.xuanyusong.com/archives/4018
- 转载请注明: 雨松MOMO 2016年04月20日 于 雨松MOMO程序研究院 发表
Unity3D研究院之Editor下监听Transform变化的更多相关文章
- vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化
一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 ...
- 对于单页应用中如何监听 URL 变化的思考
周末开发了一个在 GitHub 中给 repo 增加自定义备注的 chrome 扩展. 开发这个扩展的原因是我在 GitHub 中所 star 的项目实在太多了(截止目前 671 个),有的项目过个几 ...
- node.js监听文件变化
前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了 ...
- mvc 缓存 sqlCacheDependency 监听数据变化
mvc 缓存 对于MVC有Control缓存和Action缓存. 一.Control缓存 Control缓存即是把缓存应用到整个Control上,该Control下的所有Action都会被缓存起来 ...
- AngularJS监听路由变化
使用AngularJS时,当路由发生改变时,我们需要做某些处理,此时可以监听路由事件,常用的是$routeStartChange, $routeChangeSuccess.完整例子如下: <!D ...
- Android 5.0 以上监听网络变化
大家好,大概有一个多月没有更新博客了,我是干什么去了呢?很明显,程序员当然要加班……这一次跟大家分享一下新项目的一些心得. 监听网络变化在开发中是经常用到的,例如我们断网有一些友好的提示,或者根据不同 ...
- React和Vue中,是如何监听变量变化的
React 中事件监听 本地调试React代码的方法 先将React代码下载到本地,进入项目文件夹后yarn build 利用create-react-app创建一个自己的项目 把react源码和自己 ...
- iOS开发之--为UITextField监听数值变化的三种方法
项目中有个验证码输入直接验证跳转页面,用的RAC来监听textfield的输入值,如下: @weakify(self); [self.codeView.textField.rac_textSignal ...
- vue 如何通过监听路由变化给父级路由菜单添加active样式
1.项目需求:在项目开发中,多级菜单的情况下,勾选子菜单时,需要在父级菜单添加active样式. 2.遇到的问题:一级路由菜单的话,点击当前路由会自动在路由标签上添加router-link-exact ...
随机推荐
- lightoj1085 线段树+dp
//Accepted 7552 KB 844 ms //dp[i]=sum(dp[j])+1 j<i && a[j]<a[i] //可以用线段树求所用小于a[i]的dp[j ...
- oracle 10gwindow7安装添加内容
F:\软件\database\stage\prereq\db\refhost.xml <!--Microsoft Windows 7 .Windows 8--> <OPERATING ...
- servlet容器处理请求过程
下图是关于tomcat服务器接收客户请求并作出响应的图例. tomcat不仅仅只是一个servlet容器,也是一个web服务器,servlet容器在web服务器之内或者说servlet容器托管于web ...
- Python的交互式界面 编写 .
from tkinter import * # 导入tkinter模块的所有内容 root = Tk() # 创建一个文本Label对象 textLabel = Label(root, # 将内容绑定 ...
- Jdk配置串在profile中
JAVA_HOME=/home/will/appSource/jdk1.7.0_25PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar ...
- HDU2073(暴力) VS HDU5214(贪心)
题意:给出n组l[i],r[i],求出能够相互连接的最大个数,比如(1,2) ,(2,3),(5,6)就是可以连接的3组数据: 思路:2073数组大小为100,纯暴力就可以了,不过注意排序时,按照r的 ...
- IOS 作业项目(4)步步完成 画图 程序(剧终)
// // CHViewController.m // SuperDrawingSample // // Created by JaikenLI on 13-11-21. // Copyrig ...
- POJ 1269 (直线求交)
Problem Intersecting Lines (POJ 1269) 题目大意 给定两条直线,问两条直线是否重合,是否平行,或求出交点. 解题分析 主要用叉积做,可以避免斜率被0除的情况. 求交 ...
- show master status empty解决方案
The following MySQL error might occur if you are using MySQL replication and binary logs. mysql> ...
- 重学STM32---(五)ADC
这两天把外部中断和ADC看了下,个人感觉外部中断不是很难,也就没有把记下来了,毕竟写这个挺浪费时间.ADC是比较复杂的,如果想让完全自由的运用ADC必须经过多次实践可能才可以.由于已经学过库函数,也就 ...