当前位置: 首页 > news >正文

网站维护工作内容有什么宁波网站建设专业定制

网站维护工作内容有什么,宁波网站建设专业定制,深圳市龙华区繁华吗,学网站美工设计更新日期#xff1a;2025年1月23日。 Github源码#xff1a;[点我获取源码] Gitee源码#xff1a;[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A… 更新日期2025年1月23日。 Github源码[点我获取源码] Gitee源码[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析AnnotationWindow类 开始编写工具 开发编辑器工具 本章我将借助Assembly Viewer工具和ILSpy工具依靠反射开发一个Unity编辑器工具此为快速开发编辑器工具的一个示例。 此工具的用途一键隐藏/显示脚本的Gizmos控件还Scene视图一个干净清爽。 MouseRayTarget焦点视角 最新的MouseRayTarget组件新增了参数Look At Angle用于在自由视角模式下摄像机焦点到此物体时所进入的视角参数 该参数同时会借助Gizmos控件功能在Scene视图模拟显示摄像机注视他时可能处于的位置 如果选中的物体多了或者选中了根物体这些Gizmos控件就有点混乱了 Collider线框 而且MouseRayTarget组件一般为了配合鼠标点击都会同时挂载碰撞器Collider组件Collider组件的线框也是干扰画面的最大元凶之一在一些大场景里面尤其明显 虽然我们可以在Scene视图右上方的Gizmos菜单里面找到并隐藏任意组件、脚本的Gizmos但这个过程略显繁琐 我们所想的是在需要时一键显示Gizmos不需要时一键隐藏Gizmos显示与隐藏的切换越快捷、简便越好。 为此我们准备此编辑器工具的开发。 Assembly Viewer搜索程序集 为了显示和隐藏Gizmos我们不可能自行开发此功能所以只能借助上图位于Scene视图的Gizmos菜单。 打开Assembly Viewer程序集搜索工具 Gizmos菜单作为一个编辑器窗口其必定位于UnityEditor程序集中所以我们直接在UnityEditor程序集中搜索关键字Gizmos 经过一番搜索最终在UnityEditor.SceneViewModule中搜到了一个可疑目标 SceneView顾名思义即为Scene视图且这个GizmosElement类继承至EditorToolbarDropdownToggle从名字上看很像是编辑器工具栏下拉菜单OK了我们的切入点就选他了。 接下来我们点击Open in ILSpy按钮在ILSpy中反编译这个程序集 ILSpy反编译程序集 搜索GizmosElement类 反编译成功后我们首先搜索切入点GizmosElement类 找到Gizmos菜单 反编译该类后查看源码第一眼就找到了我们想要的东西 此工具栏提示正好与编辑器中的对应说明这个类正是Gizmos菜单 找到Gizmos窗口 点击Gizmos菜单会打开Gizmos窗口所以我们看菜单的点击事件 很明显这句话便是打开Gizmos窗口 AnnotationWindow.ShowAtPosition(base.worldBound, false);AnnotationWindow便是我们要找的Gizmos窗口。 分析AnnotationWindow类 通过分析AnnotationWindow类我们知道了一个GizmoInfo对象即对应了一个组件、脚本的Gizmos状态。 其中的如下2个GizmoInfo集合正对应了AnnotationWindow窗口中的组件Builtin和脚本Script 再进一步分析其中的SetGizmoState方法即可设置一个GizmoInfo对象的开启状态也即是Gizmos控件的开启状态 开始编写工具 万事俱备只欠东风接下来就是编码环节熟悉反射的同学脑海中可能已经构建了一套完整的伪代码事实上反射的代码也极其简单所以我们就直接贴出源码了 protected void ShowOrHideGizmos(string className, bool isBuiltin){//反射出AnnotationWindow类Type type Type.GetType(UnityEditor.AnnotationWindow,UnityEditor);//根据是否为内置组件反射出对应的GizmoInfo集合FieldInfo annotations type.GetField(isBuiltin ? m_BuiltinAnnotations : m_ScriptAnnotations, BindingFlags.Instance | BindingFlags.NonPublic);//反射出打开AnnotationWindow窗口的方法MethodInfo showAtPosition type.GetMethod(ShowAtPosition, BindingFlags.Static | BindingFlags.NonPublic);//反射出设置Gizmos状态的方法MethodInfo setGizmoState type.GetMethod(SetGizmoState, BindingFlags.Instance | BindingFlags.NonPublic);//第一步先打开AnnotationWindow窗口显示位置无所谓我们立即会关闭他showAtPosition.Invoke(null, new object[] { Rect.zero, false });EditorWindow window EditorWindow.GetWindow(type);//第二步反射出GizmoInfo集合的真实对象ListGizmoInfo gizmoInfos annotations.GetValue(window) as ListGizmoInfo;//第三步找到我们需要设置Gizmos状态的类的GizmoInfo对象GizmoInfo gizmoInfo gizmoInfos.Find((g) { return g.name className; });//第三步改变Gizmos激活状态显示变隐藏隐藏变显示gizmoInfo.gizmoEnabled !gizmoInfo.gizmoEnabled;//第四步调用设置Gizmos状态的方法setGizmoState.Invoke(window, new object[] { gizmoInfo, true });//第五步关闭窗口window.Close();}如上方法我们将其放到MouseRayTargetBase类中然后在检视面板写一个按钮调用他即可 [Button(Show/Hide This Gizmos, ButtonAttribute.EnableMode.Always)]protected void ShowOrHideThisGizmos(){ShowOrHideGizmos(GetType().Name, false);}同时控制Collider组件的线框显示也丢在这里 [Button(Show/Hide Collider Gizmos, ButtonAttribute.EnableMode.Always)]protected void ShowOrHideColliderGizmos(){Collider collider GetComponentCollider();if (collider){ShowOrHideGizmos(collider.GetType().Name, true);}}最后我们来看看效果
http://www.w-s-a.com/news/464894/

相关文章:

  • 网站建设服务的具体条件怎么建设一个响应式网站
  • 做flash的网站wordpress设置前台投稿
  • 商务网站开发文档迅雷资源做下载网站
  • 无极磁铁网站如何把地图放到自己做的网站上
  • 青浦赵巷网站建设公司网站开发需求文档
  • 苏州网站建设的公司哪家好无锡网站制作那些
  • 装饰公司网站模板科技成果鉴定机构
  • 给公司做的东西放到私人网站上十堰为企业做网站的单位
  • 手机网站建设价钱手机自己做网站
  • 网站建设属于哪种公司电子商务查询网站
  • 工程建设标准强制性条文最新版本网站关键词排名优化应该怎么做
  • 网站网页设计内容品牌高端网站建设公司
  • 网站开发报价 福州中国建筑网官网手机版
  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的
  • 南京网站做的好的公司猪八戒网站做推广怎么样
  • 建站收费标准福州网站搭建
  • 做防护用品的网站欧美网站建设风格特点
  • 龙华做网站联系电话北京软件开发培训班
  • 做网站运营有前途网站的建设与管理的心得体会
  • 河南网站推广怎么做网页制作免费下载
  • 网站如何屏蔽中国ip商丘网站建设的公司哪家好
  • 东莞广告公司东莞网站建设价格鹤壁哪有做网站的
  • 门户网站界面设计logo设计商标设计
  • 建设银行网站驱动宁波网站建设相信荣胜网络