unity3d Runtime Transform Gizmos 插件使用
一.如何将插件中的世界轴变为本地轴向
1.首先找到抽象类Gizmo 添加一个参数 和一个方法
private bool _localTransform;public bool LocalTransform{get { return _localTransform; }set{_localTransform = value;}}public void SetGizmoLocalAxes(bool Islocal){List<GameObject> topParents = GetParentsFromControlledObjects(true);if (Islocal&&topParents.Count > 0){_gizmoTransform.right = topParents[0].transform.right;_gizmoTransform.up = topParents[0].transform.up;_gizmoTransform.forward = topParents[0].transform.forward;}else{_gizmoTransform.right = Vector3.right;_gizmoTransform.up = Vector3.up;_gizmoTransform.forward = Vector3.forward;}}
2.找到TranslationGizmoInspectorGUI类添加gui显示项,让它能够在面板显示出来
newBoolValue = EditorGUILayout.ToggleLeft("LocalTransform", _translationGizmo.LocalTransform);if (newBoolValue != _translationGizmo.LocalTransform){UnityEditorUndoHelper.RecordObjectForInspectorPropertyChange(_translationGizmo);_translationGizmo.LocalTransform = newBoolValue;}
3.最后一步 还是在Gizmo 类中找到 protected int[] GetSortedGizmoAxesIndices()这个方法,
把上面刚刚写的SetGizmoLocalAxes方法引用到这个方法里,写在第一行
protected int[] GetSortedGizmoAxesIndices(){SetGizmoLocalAxes(_localTransform);//下面代码不变}
这样就ok了
二. 点击ui能够选中物体
一般场景ui脚本绑定一个物体,需要点击ui自动选中物体,包括插件的轴和框选范围shader,
(1)第一种方法
使用插件给的固有方法
//先清除再增加FindObjectOfType<EditorObjectSelection>().ClearSelection(true);FindObjectOfType<EditorObjectSelection>().AddObjectToSelection(gameObject, true);
(2)第二种方法
我们只需要修改EditorObjectSelection场景中 OnInputDeviceFirstButtonDown方法
//增加一个参数就可以了 ,私有变公有public void OnInputDeviceFirstButtonDown(GameObject AddSelect=null){}
最后试一试吧,在UI里调用这个函数
//成功了就给我点个赞吧FindObjectOfType<EditorObjectSelection().OnInputDeviceFirstButtonDown(gameObject);
三 物体的移动旋转 缩放变化
继承IRTEditorEventListener接口实现
四 监听撤销/重做操作
如果开启撤销/重做功能,想要监听时继承IMessageListener接口
//重做
MessageListenerDatabase.Instance.RegisterListenerForMessage(MessageType.GizmoTransformOperationWasRedone, this);//撤销MessageListenerDatabase.Instance.RegisterListenerForMessage(MessageType.GizmoTransformOperationWasUndone, this);
五 轴的开始,持续和结束拖拽阶段 事件
public class NodeGeneration : MonoBehaviour{public virtual void GizmoTransformDragStart(Gizmo gizmo){}public virtual void GizmoTransforDragUpdate(Gizmo gizmo){}public virtual void GizmoTransformDragEnd(Gizmo gizmo){}public virtual void GizmoRotateDragStart(Gizmo gizmo){}public virtual void GizmoRotateDragUpdate(Gizmo gizmo){}public virtual void GizmoRotateDragEnd(Gizmo gizmo){}
}
private List<NodeGeneration> modelSelectEvents = new List<NodeGeneration>();public TranslationGizmo translationGizmo;public RotationGizmo rotateGizmo;void Start(){FindObjectOfType<EditorObjectSelection>().SelectionChanged += (tr) => {if (tr.SelectedObjects.Count == 0){}else{for (int i = 0; i < modelSelectEvents.Count; i++){translationGizmo.GizmoDragStart -= modelSelectEvents[i].GizmoTransformDragStart;translationGizmo.GizmoDragUpdate -= modelSelectEvents[i].GizmoTransforDragUpdate;translationGizmo.GizmoDragEnd -= modelSelectEvents[i].GizmoTransformDragEnd;rotateGizmo.GizmoDragStart -= modelSelectEvents[i].GizmoRotateDragStart;rotateGizmo.GizmoDragUpdate -= modelSelectEvents[i].GizmoRotateDragUpdate;rotateGizmo.GizmoDragEnd -= modelSelectEvents[i].GizmoRotateDragEnd;}modelSelectEvents.Clear();var selelist = FindObjectOfType<EditorObjectSelection>().SelectedGameObjects;foreach (var sele in selelist){var iteml = sele.GetComponent<NodeGeneration>();if (iteml && translationGizmo && rotateGizmo){translationGizmo.GizmoDragStart += iteml.GizmoTransformDragStart;translationGizmo.GizmoDragUpdate += iteml.GizmoTransforDragUpdate;translationGizmo.GizmoDragEnd += iteml.GizmoTransformDragEnd;rotateGizmo.GizmoDragStart += iteml.GizmoRotateDragStart;rotateGizmo.GizmoDragUpdate += iteml.GizmoRotateDragUpdate;rotateGizmo.GizmoDragEnd += iteml.GizmoRotateDragEnd;modelSelectEvents.Add(iteml);}}}};}
六 物体选中事件
FindObjectOfType<EditorObjectSelection>().SelectionChanged +=(tr)=>{}
七 改变轴类型 Translate rotation scale…
FindObjectOfType<EditorGizmoSystem>().ChangeActiveGizmo(GizmoType.Rotation);FindObjectOfType<EditorGizmoSystem>().ChangeActiveGizmo(GizmoType.Translation);
unity3d Runtime Transform Gizmos 插件使用相关推荐
- Unity3D Runtime Transform Gizmos运行时移动、旋转、缩放模型
这款在商店上卖35美元的插件,实用性非常强. 有需要的可以直接在我的CSDN库里下载: Unity3DRuntimeTransformGizmos运行时移动.旋转.缩放模型的插件工程文件-Swift文 ...
- 【风宇冲】Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载
[风宇冲]Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载 (2012-12-09 07:27:51) 转载▼ 标签: unity3d unity unity3d教程 unity3 ...
- android谷歌打印插件下载地址,ARC Welder(App Runtime for Chrome)插件下载 附下载地址
ARC Welder(App Runtime for Chrome)插件是可以让安卓应用APK安装到谷歌Chrome浏览器并运行的CRX插件,有了这个插件就可以抛弃安卓虚拟机了.受限于网络问题,很多小 ...
- Unity3D引擎各大插件免费下载地址
Unity3D引擎作为当前最主流的3D游戏引擎之一,拥有大量第三方插件和工具.以下为各大Unity3D引擎各大插件免费下载地址,还有一些热门插件例如:Playmaker . UnIDE .Tile B ...
- 免费资源分享(六) Unity3D 雷达实时定位插件
免费分享 Unity3D 雷达实时定位插件. 适应版本:Unity 2018.4 链接:https://pan.baidu.com/s/1kE6uTSs70liY2l7GK3r7Eg 提取码:7dw1 ...
- Unity3D中使用easyroad3d插件 删除道路
Unity3D中使用easyroad3d插件 删除道路操作方法: 在"Hierarchy"中选中你新建的road的名称,点击展开,会有一个名为"Markers" ...
- 2019年4月份整理的Unity3D 20个实用插件-免费下载
Unity3D 简易细节层次插件 Simple LOD http://www.idoubi.net/unity3d/tool/3764.html Unity3D 物体表面贴花喷漆插件 Easy Dec ...
- Unity3D常用游戏开发插件测评总结
Unity3D插件详细评测及教学下载 分类: unity3d2013-12-13 11:29 2230人阅读 评论(0) 收藏 举报 unity3d插件 转载自风宇冲Unity3D教程学院 本文一共分 ...
- Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 引言:想用Unity3D制作优秀的游戏,插件是必不可少的.工欲善其事必先利其器.本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择 ...
最新文章
- 巴克莱:对冲基金AI和大数据工作指南
- 2020年关于SAP知识问答的一个新的尝试
- xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制
- remove()与empty()的区别
- 用Visual Studio实践敏捷测试(二)上
- table 的 id 属性不被 document.getElementById支持
- [转载] 消除vscode安装pylint后提示的unused variable
- redis 获取类似key的所i有的值_高可用 Redis 分布式锁实施方案!
- 栅栏密码加密/解密【传统型】在线工具
- Python实现问卷星表单机刷
- Code is far away from bug with the animal protecting
- Oink:类似Foursquare Radar的排名应用
- linux 操作excel文件,Linux下输出excel文件
- JAVA8 Map新方法:compute,computeIfAbsent,putIfAbsent与put的区别
- pyspark:RDD和DataFrame
- BCset BC set how entry is inserted to Database table when activated
- ax.patches 表示什么?
- MTK平台LCD驱动框架详解(一)
- Spring Security使用(三) 安全框架内使用QQ登录以及不加安全框架使用QQ登录
- 对python的理解_《对》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
热门文章
- 复印机维修简明学习教程
- 普遍化的混合云架构,为何再一次被行业“重点关注”?
- python儿童命令_《与孩子一起学编程》第一章出发吧之指令学习、与Python交互|中国少儿编程网...
- 2016年1月13日
- Web Crawling and Data Miniing with Apache Nutch(翻译+学习心得)_01
- js通过QRCode生成二维码并下载
- iOS —双重认证,苹果开发者中心进不去了,xcode也不能添加账户了? Application Loader 登录不上?
- precision和accuracy的区别?》
- 自动驾驶(四十四)---------主动安全功能简介
- matlab相平面图程序,相平面分析matlab程序