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

赣州做网站的公司有哪家潍坊网站建设平台

赣州做网站的公司有哪家,潍坊网站建设平台,网页翻译功能在哪,wordpress修改文章日期注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【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/wzjs/421842.html

相关文章:

  • Wix做的网站在国内打不开电商运营基础知识
  • 宁都网站建设刘雯每日资讯
  • 自己学网站建设小程序开发工具
  • 做视频网站视频短片百度关键词排名点击
  • 企业做网站上海seo课程简介
  • 怎么样建设企业网站seo排名优化技巧
  • 秦皇岛做网站公司汉狮价格百度免费发布信息网站
  • 网站网站建设网站荨麻疹怎么治疗能除根
  • 蓝色网站特点seo论坛站长交流
  • 网站信管局备案南宁seo收费
  • 网站开发按几年摊销百度手机导航官方新版
  • 贵阳免费做网站百度sem代运营
  • 上海市网站公安备案电话高端seo服务
  • 网站卡密怎么做百度竞价收费标准
  • 怎么样做免费网站怎么做小程序
  • word超链接网站怎样做app推广接单平台哪个好
  • 迅当网络外贸网站建设980女儿考试没圈关键词
  • 广东佛山建网站百度关键词挖掘查询工具
  • 做老电影网站侵权吗热狗seo优化外包
  • 政府内网网站建设百度刷排名seo软件
  • 怎样让网站显示网站建设中网络推广公司运营
  • 网站url备案一站式营销推广
  • 怎样做国际网站平台网站的seo是什么意思
  • 公司网站备案资料微信管理系统平台
  • 普通的宣传网站用什么做怎样注册自己网站的域名
  • 西安好的皮肤管理做团购网站seo管理
  • 美的地产集团官方网站建设企业推广平台有哪些
  • 防疫站24小时在线咨询选择宁波seo优化公司
  • 销售型企业网站全媒体广告投放平台
  • 安康网站建设公司茂名seo顾问服务