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

网站建设顾问英语php网站实例教程

网站建设顾问英语,php网站实例教程,成都微网站建设,怎吗做网站挣钱注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、获取当前选择的Object,及任意对象1、介…

注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。

文章目录

  • 前言
  • 一、获取当前选择的Object,及任意对象
    • 1、介绍
    • 2、示例
  • 二、获取当前选择的GameObject
    • 1、介绍
    • 2、示例
  • 三、获取当前选择的Transform
    • 1、介绍
    • 2、示例
  • 四、判断某个对象是否被选中
    • 1、介绍
    • 2、示例
  • 五、筛选选中的内容
    • 1、介绍
    • 2、示例
  • 六、当选中变化时会调用的委托
    • 1、介绍
    • 2、示例
  • 专栏推荐
  • 完结

前言

Selection公共类主要是帮助我们在当前Unity编辑器中获取到选择的对象的,我们可以利用它对选中对象进行一些处理。只能用于编辑器开发中。

一、获取当前选择的Object,及任意对象

1、介绍

  • Selection.activeObject:获取当前在面板上选择的游戏物体Object,未选择则返回Null。选择多个则返回第一个选择的游戏物体。
  • Selection.objects:获取当前在面板上选择的物体数组,未选择则返回Null。

2、示例

using System.Text;
using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private StringBuilder str = new StringBuilder("没有选择");private StringBuilder strs = new StringBuilder("没有选择");[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void OnGUI(){// 获取当前选择的Objectif (GUILayout.Button("获取当前选择的Object的名字")){if (Selection.activeObject != null){str.Clear();str.Append(Selection.activeObject.name);if (Selection.activeObject is GameObject)Debug.Log("它是游戏对象");else if (Selection.activeObject is Texture)Debug.Log("它是一张纹理");else if (Selection.activeObject is TextAsset)Debug.Log("它是一个文本");elseDebug.Log("它是其他类型的资源");}else{str.Clear();str.Append("没有选择");}}EditorGUILayout.LabelField("当前选择的对象", str.ToString());// 获取当前选择的所有Objectif (GUILayout.Button("获取当前选择的所有Object的名字")){if (Selection.count != 0){strs.Clear();for (int i = 0; i < Selection.objects.Length; i++){strs.Append(Selection.objects[i].name + "|");}}else{strs.Clear();strs.Append("没有选择");}}EditorGUILayout.LabelField("当前选择的所有Object对象", strs.ToString());}
}

效果
在这里插入图片描述

二、获取当前选择的GameObject

1、介绍

  • Selection.activeGameObject:获取当前在面板上选择的游戏物体GameObject,未选择或者选择的不是游戏对象则返回Null,选择多个则返回第一个选择的游戏物体。
  • Selection.gameObjects:获取当前选择的所有GameObject数组,未选择则返回Null。

2、示例

using System.Text;
using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private StringBuilder str = new StringBuilder("没有选择");private StringBuilder strs = new StringBuilder("没有选择");[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void OnGUI(){// 获取当前选择的GameObjectif (GUILayout.Button("获取当前选择的GameObject的名字")){if (Selection.activeGameObject != null){str.Clear();str.Append(Selection.activeGameObject.name);}else{str.Clear();str.Append("没有选择");}}EditorGUILayout.LabelField("选择的GameObject", str.ToString());// 获取当前选择的所有GameObjectif (GUILayout.Button("获取当前选择的所有GameObject的名字")){if (Selection.count != 0){strs.Clear();for (int i = 0; i < Selection.gameObjects.Length; i++){strs.Append(Selection.gameObjects[i].name + "|");}}else{strs.Clear();strs.Append("没有选择");}}EditorGUILayout.LabelField("选择的所有GameObject", strs.ToString());        }
}

效果
在这里插入图片描述

三、获取当前选择的Transform

1、介绍

  • Selection.activeTransform:获取当前在面板上选择的游戏物体的Transform,只能获取Hierarchy窗口的对象,未选择则返回Null,选择多个则返回第一个选择的游戏物体。
  • Selection.transforms:获取当前选择的所有Transform,未选择则返回Null。

2、示例

using System.Text;
using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private StringBuilder str = new StringBuilder("没有选择");private StringBuilder strs = new StringBuilder("没有选择");[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void OnGUI(){// 获取当前选择的Transformif (GUILayout.Button("获取当前选择的Transform的名字")){if (Selection.activeTransform != null){str.Clear();str.Append(Selection.activeTransform.name);//修改位置Selection.activeTransform.position = new Vector3(10, 10, 10);}else{str.Clear();str.Append("没有选择");}}EditorGUILayout.LabelField("选择的Transform", str.ToString());// 获取当前选择的所有Transformif (GUILayout.Button("获取当前选择的所有Transform的名字")){if (Selection.count != 0){strs.Clear();for (int i = 0; i < Selection.transforms.Length; i++){strs.Append(Selection.transforms[i].name + "|");}}else{strs.Clear();strs.Append("没有选择");}}EditorGUILayout.LabelField("选择的所有Transform", strs.ToString());        }
}

效果
在这里插入图片描述

四、判断某个对象是否被选中

1、介绍

Contains:判断某个对象是否被选中(多选中存在也算)

2、示例

using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private Object obj;[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void OnGUI(){// 判断某个对象是否被选中obj = EditorGUILayout.ObjectField("用于判断是否被选中的对象", obj, typeof(GameObject), true);if (GUILayout.Button("判断对象是否被选中")){if (Selection.Contains(obj))Debug.Log("对象有被选中");elseDebug.Log("对象没有被选中");}}
}

效果
在这里插入图片描述

五、筛选选中的内容

1、介绍

  • 从当前选择对象中,筛选出想要的内容API
    Selection.GetFiltered(类型, 筛选模式)
    或者
    Selection.GetFiltered<类型>(筛选模式)
    
  • 筛选模式:SelectionMode
    • Unfiltered: 不过滤
    • TopLevel: 只获取最上层对象,子对象不获取
    • Deep: 父对象、子对象都获取
    • ExcludePrefab: 排除预设体
    • Editable: 只选择可编辑的对象
    • OnlyUserModifiable: 仅用户可修改的内容
    • Assets: 只返回资源文件夹下的内容
    • DeepAssets: 如果存在子文件夹,其中的内容也获取
  • 如果要混用 位或 | 即可

2、示例

using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private Object obj;[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void OnGUI(){// 筛选选中的内容if(GUILayout.Button("筛选选中的内容")){Object[] objs = Selection.GetFiltered<Object>(SelectionMode.Assets | SelectionMode.DeepAssets);for (int i = 0; i < objs.Length; i++){Debug.Log(objs[i].name);}}}
}

效果
在这里插入图片描述

六、当选中变化时会调用的委托

1、介绍

Selection.selectionChanged += 函数;//选择的物体变化时调用

2、示例

using UnityEditor;
using UnityEngine;public class EditorSelectionWindow : EditorWindow
{private Object obj;[MenuItem("编辑器拓展/自定义窗口拓展/Selection自定义窗口")]private static void OpenEditorGUIUtilityWindow(){EditorSelectionWindow win = EditorWindow.GetWindow<EditorSelectionWindow>("Selection知识面板");win.Show();}private void SelectionChanged(){Debug.Log("选择的对象变化了");}private void OnEnable(){Selection.selectionChanged += SelectionChanged;}private void OnDestroy(){Selection.selectionChanged -= SelectionChanged;}
}

效果
在这里插入图片描述


专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】
【unity游戏开发——编辑器扩展】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

http://www.dtcms.com/a/510871.html

相关文章:

  • wordpress 怎么切换主题廊坊seo管理
  • 京东电子商务网站的建设wordpress自定义发文章界面
  • 刚做的网站为什么百度搜不到wordpress如何修改上传图片大小
  • 一流的网站建设公司网站建设静态部分实训总结
  • 怎样建立一个营销网站百度权重是怎么来的
  • 电子印章在线制作网站柳州学校网站建设
  • 备案的网站换空间竞价托管资讯
  • 外贸站群wordpress注册怎么设置密码
  • 网站后台安全性html博客网页完整代码
  • 营销型网站设计内容哪个网站找做软件
  • 桐庐做网站做网站费用会计分录
  • 淘宝客网站怎么推广蚌埠市重点工程建设管理局网站
  • 古交网站建设百度知道登录入口
  • 网站推广文案怎么写搬瓦工 做网站
  • 自己做网站需要的技术wordpress蜘蛛插件
  • 企业网站的好处新葡京网址网站建设
  • 南通企业网站排名优化ppt网站建设
  • 网站建设风格有哪些wordpress删除中文
  • 象刀设计网站文网文网站建设
  • 沂源网站建设上海 网站建设 外包
  • 怎么样做移动油光文字网站太原市0元网站建设
  • 怎么做网站编程网站建设一条龙全包seo
  • 海报设计模板网站在线一键免费生成网页网站
  • PHP网站开发涉及的工具有哪些台州路桥区专业高端网站设计
  • 平邑网站制作如何做网站大管家
  • 网站改版建议app开发公司排名
  • 图书网站怎么做上海网站公
  • 杨浦集团网站建设网页设计作业主题
  • 网站js特效c2c电商网站有哪些
  • wordpress搭建网站有什么好外简述jsp网站开发的环境配置