Unity中容易被忽略的小技巧

2023-11-17

今天在游戏蛮牛上看到慕容小匹夫的一篇文章,感觉对自己现在的水平很实用,就给转载了过来,以便日后好温习一下。

这里还是要支持原创作者,原文地址在这里

一、编辑器染色

一个常见的工作情景是我们在调整场景内的某些组件参数时,没有注意到自己是在Play Mode的模式下进行的,从而导致修改没有被保存下来。

这个问题的关键在于是我们没有意识到自己已经处在Play Mode,如果我们能够在修改参数的时候,清楚的意识到自己处于Play Mode,那么我们自然可以通过Copy Component来保存数据或者是选择在Editor Mode进行修改。因此,我们可以通过对编辑器染色来醒目的提醒自己,自己是否已经处于Play Mode了。

一个简单的方法就是在Play Mode给编辑器染上不同的颜色:

设置路径:Edit->Preference->Color->Playmode tint

在这里,我们就可以修改Play Mode的编辑器颜色了,当然还有很多别的染色可以修改。

 

修改完之后,在Play Mode的编辑器大概效果是下面这样的:

这样,我们就能时刻意识到自己是否已经在Play Mode了。

二、锁定对象的Inspector视窗

还是一个实际的工作情景,场景中有很多对象,我们想创建一个管理器来容纳这些对象,最简单的方法就是在Hierarchy视窗中选择那些对象,将它们拖入管理器的容器中。

但是,我们立马就会发现一个问题,那就是我先选中管理器之后,再去多选所有需要被拖入管理器的对象时,Inspector视窗会变为此时所选中的被管理对象,而非管理器。这时,我们就用到了这条小技巧,我们可以锁定管理器的Inspector视窗,选中多个被管理对象之后将它们拖入管理器的数组中。我们要做的只是勾选这个小锁子图标,之后就可以同时将多个对象通过锁定的Inspector视窗拖入管理器的数组中了:

三、Inspector视窗的Debug Mode模式

同样是一个和Inspector视窗相关的技巧。我相信有一些朋友已经经常会用到了,但是我觉得这条也很实用,因此也在此和各位朋友分享。

这个常见的工作场景是这样的:我有一些字段不想通过外部修改,因此声明为private,但是又有在运行时观察这些字段实时值的需求。

默认状况下,它处于Normal模式,现在在Inspector视窗中显示的只有一个公共的成员。

这时我们就可以点击Inspector视窗右上角的下拉菜单,可以看到它和一般视窗的下拉菜单相比多了几个选项。

 

我们这里就可以选择Debug模式了。更换模式之后,之前的Inspector视窗就变成了下面这样子:

这样,我们就可以既限制字段的访问权限又观察这些私有成员的变化了。

四、利用Scene视窗设置相机数据

我觉得这条技巧很受用。这次我们的工作情景变成了这样:对很多人来说,在场景视图中调整观察的角度、位置等等是一件十分简单的事情,但是如果真的要游戏中达到同样的效果,则必须去调整场景中的相机。

左边Scene视图,右边Game视图

(左边Scene视图,右边Game视图)

相对来说,调整相机的过程更复杂,那么有没有什么方法能够直接让摄像机应用和Scene视图一样的设置呢?这条技巧就是关于这个的。

Shift + Ctrl + f

 上面的快捷键就可以把Scene视图中的数据复制给选中的摄像机。

当然,除了使用快捷键,我们还可以在菜单中选择相应的操作。

GameObject->Align With View

也可以达到相同的效果。

左边Scene视图,右边Game视图

(左边Scene视图,右边Game视图)

五、拓展编辑器

这一部分并非来自某一个技巧,而是和拓展编辑器相关的小技巧的集合。

在Unity中拓展编辑器,往往需要用到C#的各种特性(attribute)。

例如,我们可以使用[RangeAttribute]在Inspector视窗上显示一个滑动条。

 [Range(0,10)]
 public int publicInt;

如果,我们嫌Inspector视窗上显示的各个字段太混乱没有章法,那么我们可以使用另外两个特性来帮助我们对显示在Inspector上的字段进行整理:[SpaceAttribute]和[HeaderAttribute]。

    #region 字段

    [Header("测试数据1")]
    [Range(0,10)]
    public int publicInt;
    public float publicFloat;
    public bool publicBool;
    public GameObject publicObj;
    [Header("测试数据2")]
    //[Space(10)]
    public List<GameObject> objsArray;

    #endregion

这样,我们就可以为一堆字段分类显示。

如果,我们既想保证类的某个字段不被其他的类访问修改,又想在Inspector视窗中修改这个字段的值的话,就可以采用private +[SerializeField]属性的方案。

 

    [SerializeField]
    private int privateInt;

六、更好的预览模型

这条技巧,我相信它能够提供给我们在Editor中观察模型的更好的体验。一个可能的工作情景是这样的,我们导入了一个模型,并希望在模型的Inspector视窗上预览该模型时,常常只能拘泥于这个角落。

想要看的更清楚、更大似乎只能拖动整个Inspector视窗。
其实,我们可以轻松的将模型预览的小窗口单独拖出来。只需要鼠标右键单击预览窗口的上沿。

结果如下:

 

以上就是今天学习到的内容,以后还会继续和大家分享学习到的内容。

游戏场景资源:Japanese Matsuri City (https://www.assetstore.unity3d.com/cn/#%21/content/35619)(Unity资源商店中的免费资源)

原视频链接:

TOP 10 UNITY TIPS
https://www.youtube.com/watch?v=JDVuTBHnGWw

TOP 10 UNITY TIPS #2
https://www.youtube.com/watch?v=IHeMmFxvmkY

 

转载于:https://www.cnblogs.com/Mr-Miracle/p/9272565.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity中容易被忽略的小技巧 的相关文章

随机推荐

  • Working mode of block password

    本文授权自 MagicBoy Working mode of block password Network security 1 电子密码本ECB electronic codebook mode 3 密码反馈CFB cipher feed
  • Weex实现富文本展示

    Weex默认不支持富文本展示 需要我们手动实现 已知的方式有两种 第一种方式 使用Weex Ui中的wxc rich text组件 它提供了丰富的功能样式 但是其局限性也是显而易见的 不能直接识别h5样式 第二种方式 第一步 自定义组件 请
  • 幼儿园html网页代码,html幼儿园网站页面div+css

    实例简介 幼儿园网站全站代码 使用div css技术 可参考下载 实例截图 核心代码 schoolyr schoolyr baojian html css alixixi css baojian css css css jiaoxue cs
  • python 注解, 装饰器@ 详解

    目录 1 组合数据类型注解方式 2 自定义类注解 3 参数是函数的注解 4 变量注解 5 装饰器 python注解包含 组合数据类型注解 自定义类注解 变量注解 参数是函数的注解等 python的注解 能够让python 像java C语言
  • qt creator debug无法调试 进入 qt源码

    qt creator无法调试qt源码的问题 如果自己写的代码无法调试请移步这里 qt下载地址 https download qt io archive qt https download qt io new archive qt 正常来讲
  • .net 5 开发 linux 桌面应用_Electron跨平台桌面应用开发工具

    一 简介 Electron是github发布的跨平台桌面应用开发工具 支持Web技术开发桌面应用 其本身是基于C 开发的 GUI核心来自于Chrome 而JavaScript引擎使用v8 简单来说 Electron相当于一个浏览器的外壳 可
  • Jupyter-02-numpy:创建ndarray 数组

    创建ndarray 数组的方法 import numpy as np 创建ndarray 数组需要调用numpy库 用列表创建 创建一维数组 arr1 np array 1 2 3 4 arr1 s a b c np array s 用元组
  • Scala中的元祖Tuple

    Scala中元祖是一组任意数据类型的集合 与列表一样 元组也是不可变的 但与列表不同的是元组可以包含不同类型的元素 数组 元祖 定义 元素中数据类型相同 元素不同数据类型 声明 val arr Array 1 2 3 var tuple 1
  • 华为服务器系统故障,服务器系统故障

    服务器系统故障 内容精选 换一换 需在所有云服务器上安装Data Provider软件 SAP技术支持人员通过该软件收集云服务器所在的平台信息 以便在SAP系统故障 性能下降时进行定位和分析 SAP NetWeaver所在的服务器上 在创建
  • 导致java.lang.UnsatisfiedLinkError错误的一种解决办法

    欢迎转载请注明出处http blog csdn net ning gg article details 53641254 在程序中加入so文件导致java lang UnsatisfiedLinkError错误的一种解决办法 可能这个解决办
  • 学Java需要的英语水平以及关键词汇总

    还是需要英语的 但是是编程英语 和从小到大学的 英语 不是一回事 Java语言的输出语句 System out print 你好 此处的 System表示 系统 out表示 在 外面 print表示 打印 每一个单词之间使用 英文输入法的点
  • streamlit——搭建学生评分网站(告别问卷星)

    streamlit搭建多人评分网站 文章目录 streamlit搭建多人评分网站 一 引言 二 数据准备 三 streamlit代码 四 数据合并代码 一 引言 当需要对班级内多人进行打分时 为了不使用问卷星等平台进行评分 使用pandas
  • AJAX核心基础知识之倒计时抢购案例

    倒计时 分析 两个时间 目标时间 当前时间 目标时间 当前时间 计算时间差中包含多少小时 多少分钟 多少秒 每间隔一秒钟重新获取当前时间 定时器 重算时间 核心问题 1当前时间不可以获取客户端本地的 本地的时间客户可以肆意修改 获取服务器的
  • 遗传算法理解(通俗易懂)

    最近研究模糊识别的一些经典算法 为更好地理解遗传算法的运算过程 下面用手工计算来简单地模拟遗传算法的各个主要执行步骤 例 求下述二元函数的最大值 1 个体编码 遗传算法的运算对象是表示个体的符号串 所以必须把变量 x1 x2 编码为一种 符
  • Gitee问题解决1:Gitee如何下载历史提交版本

    1 把在线的git历史版本代码下载到本地 打开gitee某个项目的主页 点击统计 点击提交 能够看到自己历史的提交信息 选择需要下载版本出的浏览文件 通过左上方黄色框能够看到提交版本的id 之后点击克隆 下载 点击下载ZIP即可 解压 2
  • mysql中sql语句使日期增加一年

    mysql表中有一些字段是显示日期的 因为各种需要 需要将它时间往后调整1年 mysql 日期增加一年的更新语句更新的语句如下 UPDATE table SET date DATE ADD date INTERVAL 1 YEAR 如果要增
  • 递推和递归、迭代的关系简介

    递推和递归 迭代的关系简介 在编程里 递推关系可以通过递归或者迭代来实现 但是递归和迭代又不仅仅只能用来实现递推关 有更广泛的用途 递推 递归和迭代都是解决问题的方法 它们之间有一定的联系 递归和迭代可以用于实现递推关系 但它们也有各自独立
  • k8s中Endpoint是什么

    在Kubernetes K8s 中 Endpoint是一种资源对象 用于表示一个Service所依赖的真实后端节点的Pod信息 它存储了一组IP地址和端口号的列表 这些IP地址和端口号对应着提供相同服务的Pod实例 主要作用 Endpoin
  • 预估db2、oracle、teradata数据库sql执行代价和时间方法

    DB2 只能得到cost 1 执行存贮过程建表 CALL SYSPROC SYSINSTALLOBJECTS EXPLAIN C CAST NULL AS VARCHAR 128 数据库用户名 2 执行 EXPLAIN PLAN SET Q
  • Unity中容易被忽略的小技巧

    今天在游戏蛮牛上看到慕容小匹夫的一篇文章 感觉对自己现在的水平很实用 就给转载了过来 以便日后好温习一下 这里还是要支持原创作者 原文地址在这里 一 编辑器染色 一个常见的工作情景是我们在调整场景内的某些组件参数时 没有注意到自己是在Pla