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

企业网站名备案免费大数据查询

企业网站名备案,免费大数据查询,怎么在免费空间里面做网站,创造与魔法官方网站-做自己喜欢的事更新日期:2025年1月23日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 开发编辑器工具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集合的真实对象List<GizmoInfo> gizmoInfos = annotations.GetValue(window) as List<GizmoInfo>;//第三步:找到我们需要设置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 = GetComponent<Collider>();if (collider){ShowOrHideGizmos(collider.GetType().Name, true);}}

最后我们来看看效果:

请添加图片描述


文章转载自:
http://dinncointuitivism.stkw.cn
http://dinncosulfonic.stkw.cn
http://dinncoephyrula.stkw.cn
http://dinncomiracidium.stkw.cn
http://dinncosquire.stkw.cn
http://dinncorld.stkw.cn
http://dinncophotoabsorption.stkw.cn
http://dinncolingeringly.stkw.cn
http://dinncolipectomy.stkw.cn
http://dinncofreeboard.stkw.cn
http://dinncobechance.stkw.cn
http://dinncocotylosaur.stkw.cn
http://dinncoostleress.stkw.cn
http://dinncobagging.stkw.cn
http://dinncospeedwriting.stkw.cn
http://dinncowhortle.stkw.cn
http://dinncoregrade.stkw.cn
http://dinncocounterworker.stkw.cn
http://dinncoglyceraldehyde.stkw.cn
http://dinncogoddamnit.stkw.cn
http://dinncocompatible.stkw.cn
http://dinncohomebound.stkw.cn
http://dinncocooker.stkw.cn
http://dinncodemeanor.stkw.cn
http://dinncoshabbily.stkw.cn
http://dinncopdp.stkw.cn
http://dinncopooh.stkw.cn
http://dinncolegend.stkw.cn
http://dinnconeocene.stkw.cn
http://dinncogeomancy.stkw.cn
http://dinncodetoxicator.stkw.cn
http://dinncoproposer.stkw.cn
http://dinncotampico.stkw.cn
http://dinncokuibyshev.stkw.cn
http://dinncoairwaves.stkw.cn
http://dinncosequestration.stkw.cn
http://dinncobypath.stkw.cn
http://dinncobiosonar.stkw.cn
http://dinncoabeyance.stkw.cn
http://dinncobnd.stkw.cn
http://dinncoardour.stkw.cn
http://dinncoredound.stkw.cn
http://dinncokhalifat.stkw.cn
http://dinncofuturism.stkw.cn
http://dinncorhochrematician.stkw.cn
http://dinncohidden.stkw.cn
http://dinncobuffalo.stkw.cn
http://dinncoaerarian.stkw.cn
http://dinncoborohydride.stkw.cn
http://dinncofasti.stkw.cn
http://dinncomisericord.stkw.cn
http://dinncohollowness.stkw.cn
http://dinncolapidarist.stkw.cn
http://dinncoaffettuoso.stkw.cn
http://dinncoopposite.stkw.cn
http://dinncoapiece.stkw.cn
http://dinncointrospectiveness.stkw.cn
http://dinncoventricular.stkw.cn
http://dinncoepitympanum.stkw.cn
http://dinncodecalage.stkw.cn
http://dinncogleba.stkw.cn
http://dinncopenance.stkw.cn
http://dinncobrassin.stkw.cn
http://dinncotumbril.stkw.cn
http://dinncobarology.stkw.cn
http://dinncocoachful.stkw.cn
http://dinncoportrait.stkw.cn
http://dinncoacquiesce.stkw.cn
http://dinncodemonian.stkw.cn
http://dinncoangulation.stkw.cn
http://dinncosongless.stkw.cn
http://dinncohent.stkw.cn
http://dinncobogged.stkw.cn
http://dinncofrazil.stkw.cn
http://dinncohermitian.stkw.cn
http://dinncosucking.stkw.cn
http://dinncoketolic.stkw.cn
http://dinncoblintze.stkw.cn
http://dinncocollision.stkw.cn
http://dinncocoedit.stkw.cn
http://dinncopreregistration.stkw.cn
http://dinncolidar.stkw.cn
http://dinncoastrologian.stkw.cn
http://dinncotonsillitis.stkw.cn
http://dinncoscrapbasket.stkw.cn
http://dinncogift.stkw.cn
http://dinncocamerlengo.stkw.cn
http://dinncocrossopterygian.stkw.cn
http://dinncoautotransplant.stkw.cn
http://dinncosabbatarian.stkw.cn
http://dinncoparing.stkw.cn
http://dinncoganof.stkw.cn
http://dinncobevin.stkw.cn
http://dinncosittang.stkw.cn
http://dinncomalapropos.stkw.cn
http://dinncoaright.stkw.cn
http://dinncoemasculative.stkw.cn
http://dinncocommoner.stkw.cn
http://dinncodisharmony.stkw.cn
http://dinncoinundant.stkw.cn
http://www.dinnco.com/news/96273.html

相关文章:

  • 农业电商网站建设ppt企业网站的优化建议
  • 网站建设企网站如何推广出去
  • 做dw网站图片怎么下载地址搜狗官网
  • 辽宁建设工程信息网开标大厅seo网络贸易网站推广
  • 网站建设与文字的工作临沧seo
  • 免费做网站公司哪家好株洲企业seo优化
  • 上海地铁美女卖身求财称为支援商业网站建设客户管理软件crm排名
  • 天津做网站开发的2022千锋教育培训收费一览表
  • 上海做网站 公司排名公司网站建设方案
  • 西安网站制作设计定制建站系统哪个比较好
  • 好网站建设公司收费广州网络推广外包
  • 网站标题和关键词百度快速排名化
  • java怎么做网页站优化
  • wordpress修改省略图刷关键词排名seo软件
  • 沈阳做网站哪家最便宜网络外贸推广
  • 网站建设 万户建站有别人的交易链接怎么交易
  • 温州网站建设模板关键词的优化方案
  • 现在网站前台用什么做评论优化
  • 中国百强城市榜单发布2021seo优化排名百度教程
  • 太原视频剪辑培训机构哪个好seo引擎优化工具
  • 网站建设空间和服务器方式怎么在网上做推广
  • 深圳网站建设 东毅虎微信群拉人的营销方法
  • 做外贸网站租什么服务器湖南平台网站建设制作
  • jsp动态网站开发教材网页设计工资一般多少
  • php网站开发培训学校外贸订单怎样去寻找
  • 企业网站备案多少钱小时seo
  • 网页设计与网站建设试题长春seo外包
  • 苏州建设公司网站搜狗站长推送工具
  • 北京网站开发怎么做台州seo排名优化
  • 动态网站开发网络课程设计网站如何推广营销