一.如何将插件中的世界轴变为本地轴向


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 插件使用相关推荐

  1. Unity3D Runtime Transform Gizmos运行时移动、旋转、缩放模型

    这款在商店上卖35美元的插件,实用性非常强. 有需要的可以直接在我的CSDN库里下载: Unity3DRuntimeTransformGizmos运行时移动.旋转.缩放模型的插件工程文件-Swift文 ...

  2. 【风宇冲】Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载

    [风宇冲]Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载 (2012-12-09 07:27:51) 转载▼ 标签: unity3d unity unity3d教程 unity3 ...

  3. android谷歌打印插件下载地址,ARC Welder(App Runtime for Chrome)插件下载 附下载地址

    ARC Welder(App Runtime for Chrome)插件是可以让安卓应用APK安装到谷歌Chrome浏览器并运行的CRX插件,有了这个插件就可以抛弃安卓虚拟机了.受限于网络问题,很多小 ...

  4. Unity3D引擎各大插件免费下载地址

    Unity3D引擎作为当前最主流的3D游戏引擎之一,拥有大量第三方插件和工具.以下为各大Unity3D引擎各大插件免费下载地址,还有一些热门插件例如:Playmaker . UnIDE .Tile B ...

  5. 免费资源分享(六) Unity3D 雷达实时定位插件

    免费分享 Unity3D 雷达实时定位插件. 适应版本:Unity 2018.4 链接:https://pan.baidu.com/s/1kE6uTSs70liY2l7GK3r7Eg 提取码:7dw1 ...

  6. Unity3D中使用easyroad3d插件 删除道路

    Unity3D中使用easyroad3d插件 删除道路操作方法: 在"Hierarchy"中选中你新建的road的名称,点击展开,会有一个名为"Markers" ...

  7. 2019年4月份整理的Unity3D 20个实用插件-免费下载

    Unity3D 简易细节层次插件 Simple LOD http://www.idoubi.net/unity3d/tool/3764.html Unity3D 物体表面贴花喷漆插件 Easy Dec ...

  8. Unity3D常用游戏开发插件测评总结

    Unity3D插件详细评测及教学下载 分类: unity3d2013-12-13 11:29 2230人阅读 评论(0) 收藏 举报 unity3d插件 转载自风宇冲Unity3D教程学院 本文一共分 ...

  9. Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载

    原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 引言:想用Unity3D制作优秀的游戏,插件是必不可少的.工欲善其事必先利其器.本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择 ...

最新文章

  1. 巴克莱:对冲基金AI和大数据工作指南
  2. 2020年关于SAP知识问答的一个新的尝试
  3. xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制
  4. remove()与empty()的区别
  5. 用Visual Studio实践敏捷测试(二)上
  6. table 的 id 属性不被 document.getElementById支持
  7. [转载] 消除vscode安装pylint后提示的unused variable
  8. redis 获取类似key的所i有的值_高可用 Redis 分布式锁实施方案!
  9. 栅栏密码加密/解密【传统型】在线工具
  10. Python实现问卷星表单机刷
  11. Code is far away from bug with the animal protecting
  12. Oink:类似Foursquare Radar的排名应用
  13. linux 操作excel文件,Linux下输出excel文件
  14. JAVA8 Map新方法:compute,computeIfAbsent,putIfAbsent与put的区别
  15. pyspark:RDD和DataFrame
  16. BCset BC set how entry is inserted to Database table when activated
  17. ax.patches 表示什么?
  18. MTK平台LCD驱动框架详解(一)
  19. Spring Security使用(三) 安全框架内使用QQ登录以及不加安全框架使用QQ登录
  20. 对python的理解_《对》字意思读音、组词解释及笔画数 - 新华字典 - 911查询

热门文章

  1. 复印机维修简明学习教程
  2. 普遍化的混合云架构,为何再一次被行业“重点关注”?
  3. python儿童命令_《与孩子一起学编程》第一章出发吧之指令学习、与Python交互|中国少儿编程网...
  4. 2016年1月13日
  5. Web Crawling and Data Miniing with Apache Nutch(翻译+学习心得)_01
  6. js通过QRCode生成二维码并下载
  7. iOS —双重认证,苹果开发者中心进不去了,xcode也不能添加账户了? Application Loader 登录不上?
  8. precision和accuracy的区别?》
  9. 自动驾驶(四十四)---------主动安全功能简介
  10. matlab相平面图程序,相平面分析matlab程序