有趣而又被忽略的Unity技巧
0x00 前言
本文的内容主要来自YouTube播主Brackeys的视频TOP 10 UNITY TIPS 和TOP 10 UNITY TIPS #2。在此基础上经过自己的实践和筛选之后,选择了几个自己觉得还算有趣而平时又有所忽略的小技巧记录在此和各位分享。
0x01 编辑器染色
这也是这两段视频的第一个小技巧,我自己也觉得很有趣。一个常见的工作情景是我们在调整场景内的某些组件参数时,没有注意到自己是在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了。
0x02 锁定对象的Inspector视窗
这是第一段视频的第三个小技巧,我觉得有趣的同时也很实用。还是一个实际的工作情景,场景中有很多对象,我们想创建一个管理器来容纳这些对象,最简单的方法就是在Hierarchy视窗中选择那些对象,将它们拖入管理器的容器中。
但是,我们立马就会发现一个问题,那就是我先选中管理器之后,再去多选所有需要被拖入管理器的对象时,Inspector视窗会变为此时所选中的被管理对象,而非管理器。这时,我们就用到了这条小技巧,我们可以锁定管理器的Inspector视窗,选中多个被管理对象之后将它们拖入管理器的数组中。我们要做的只是勾选这个小锁子图标,之后就可以同时将多个对象通过锁定的Inspector视窗拖入管理器的数组中了:
0x03 Inspector视窗的Debug Mode模式
这是第一段视频的第四个小技巧,同样是一个和Inspector视窗相关的技巧。我相信有一些朋友已经经常会用到了,但是我觉得这条也很实用,因此也在此和各位朋友分享。
这个常见的工作场景是这样的:我有一些字段不想通过外部修改,因此声明为private,但是又有在运行时观察这些字段实时值的需求。
这时我们就可以点击Inspector视窗右上角的下拉菜单,可以看到它和一般视窗的下拉菜单相比多了几个选项。
默认状况下,它处于Normal模式,我们这里就可以选择Debug模式了。更换模式之后,之前的Inspector视窗就变成了下面这样子:
这样,我们就可以既限制字段的访问权限又观察这些私有成员的变化了。
0x04 利用Scene视窗设置相机数据
这是第一段视频中的第五个小技巧,我觉得这条技巧很受用。这次我们的工作情景变成了这样:对很多人来说,在场景视图中调整观察的角度、位置等等是一件十分简单的事情,但是如果真的要游戏中达到同样的效果,则必须去调整场景中的相机。
(左侧是Scene视图,右侧是Game视图)
相对来说,调整相机的过程更复杂,那么有没有什么方法能够直接让摄像机应用和Scene视图一样的设置呢?这条技巧就是关于这个的。
首先选中场景中的摄像机,之后使用快捷键:
shift + ctrl + f
就可以把Scene视图中的数据复制给选中的摄像机了。
当然,除了使用快捷键,我们还可以在菜单中选择相应的操作。
GameObject->Align With View
也可以达到相同的效果。
0x05 拓展编辑器
这一部分并非来自某一个技巧,而是和拓展编辑器相关的小技巧的集合。
在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 bool publicBool;
public float publicFloat;
public GameObject publicObj;
[Header("测试数据2")]
[Space(10)]
public List<GameObject> objsArray;
这样,我们就可以为一堆字段分类显示了。
如果,我们既想保证类的某个字段不被其他的类访问修改,又想在Inspector视窗中修改这个字段的值的话,就可以采用private +
[SerializeField]属性的方案。
[SerializeField]
private int privateInt;
0x06 快速设置视图最大化
这也是一个我感觉很有趣的小技巧,来自第二段视频的第一个技巧。
利用这个技巧,我们可以快速的在不同的视图中设置视图的最大化。
比如场景视图和游戏视图同时显示,我们想要将场景视图放到最大,只需要将鼠标悬停在场景视图上,并同时按下快捷键:
shift + 空格
就可以将场景视图设置为最大化。
如果调整动画的话,Animator视图是必不可少的,如果要将
Animator视图最大化也只需要把鼠标停在Animator视图上,同时按shift+空格快捷键。
不过在我的使用中,Game视图不能在运行时进行这种操作,必须在暂停状态或不在Play Mode时才起作用。
0x07 更好的预览模型
这条技巧来自第二段视频的第十条,我相信它能够提供给我们在Editor中观察模型的更好的体验。一个可能的工作情景是这样的,我们导入了一个模型,并希望在模型的Inspector视窗上预览该模型时,常常只能拘泥于这个角落。
想要看的更清楚、更大似乎只能拖动整个Inspector视窗。
其实,我们可以轻松的将模型预览的小窗口单独拖出来。只需要鼠标右键单击预览窗口的上沿。
不信?你看是不是放大了很多?
0x08 小结
以上,就是这次和大家分享的内容。
场景以及模型资源来自:Japanese Matsuri City
原视频链接:
TOP 10 UNITY TIPS
TOP 10 UNITY TIPS #2
-华丽的分割线-
欢迎大家关注我的公众号慕容的游戏编程:chenjd01
最后打个广告,欢迎支持我的书《Unity 3D脚本编程》
有趣而又被忽略的Unity技巧的更多相关文章
- Fiddler使用过程中容易忽略的小技巧
fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...
- Unity中容易被忽略的小技巧
今天在游戏蛮牛上看到慕容小匹夫的一篇文章,感觉对自己现在的水平很实用,就给转载了过来,以便日后好温习一下. 这里还是要支持原创作者,原文地址在这里 一.编辑器染色 一个常见的工作情景是我们在调整场景内 ...
- sql注入时易被忽略的语法技巧以及二次注入
那些容易被忽略.容易被弄错的地方 sql注入时的技巧 ========================================================================= ...
- 【Unity技巧】使用单例模式Singleton
这几天想把在实习里碰到的一些好的技巧写在这里,也算是对实习的一个总结.好啦,今天要讲的是在Unity里应用一种非常有名的设计模式——单例模式. 开场白 单例模式的简单介绍请看前面的链接,当然网上还有很 ...
- 【Unity技巧】自定义消息框(弹出框)
写在前面 这一篇我个人认为还是很常用的,一开始也是实习的时候学到的,所以我觉得实习真的是一个快速学习工程技巧的途径. 提醒:这篇教程比较复杂,如果你不熟悉NGUI.iTween.C#的回调函数机制,那 ...
- 【Unity技巧】开发技巧(技巧篇)
写在前面 和备忘录篇一样,这篇文章旨在总结Unity开发中的一些设计技巧,当然这里只是我通过所见所闻总结的东西,如果有不对之处欢迎指出. 技巧1:把全局常量放到一个单独的脚本中 很多时候我们需要一些常 ...
- unity技巧
在之前的程序编写过程中,虽然对相关的方法进行了实例化,但是在运行的时候总是会出现“未将对象引用设置到对象的实例”,出现该种问题的原因是由于在实例化后,没有对实例化进行引用赋值,所以导致相关变量无法在其 ...
- Unity技巧集合
地址:http://blog.csdn.net/stalendp/article/details/17114135 这篇文章将收集unity的相关技巧,会不断地更新内容. 1)保存运行中的状态 uni ...
- 专业版Unity技巧分享:使用定制资源配置文件
http://unity3d.9tech.cn/news/2014/0116/39639.html 通常,在游戏的开发过程中,最终会建立起一些组件,通过某种形式的配置文件接收一些数据.这些可能是程序级 ...
随机推荐
- Linux - 函数的栈帧
栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储.为单个过程(函数调用)分配的那部分栈称为栈帧.栈帧其实是两个指针寄存器, 寄存器%ebp为帧 ...
- Java设计模式:代理模式(一)
问题的提出 现在生活中,常常在微信朋友圈里面看到代购的信息,你想在国外买什么,香港买什么,但是又懒得自己过去,于是常常委托别人帮忙买奶粉买那啥的.这类问题的缘由是因为客户和原产地没有直接的接触,所以需 ...
- 【Windows 10 应用开发】输入模拟
---恢复内容开始--- Input Injection 直译为:输入注入.通俗的译法为:模拟输入.此注入行为可以模拟以下几种输入行为: 1.键盘按键. 2.鼠标. 3.触控. 4.书写笔输入. 5. ...
- OnsenUI 前端框架(三)
上一章咱们学习了OnsenUI的工具栏.侧边栏和标签栏.通过对页面上这三部分的学习,咱们对混合应用的一个页面有了大体上的认识.从这一章开始,咱们学习OnsenUI混合项目开发过程中会用到的各种各样的组 ...
- apache安装过程中的常见问题
1. 问题"curses.h: No such file or directory" /home/mediawiki/cmake-2.8.12/Source/CursesDialo ...
- CSS垂直和水平居中
在css中,居中使用十分频繁. 居中分为水平和垂直居中 水平居中十分简单: body{ background:#f90; } body统一为这个颜色 div { margin:0 auto; back ...
- Adline网络的LMS算法与梯度下降
LMS算法,即为最小均方差,求的是误差的平方和最小. 利用梯度下降,所谓的梯度下降,本质上就是利用导数的性质来求极值点的位置,导数在这个的附近,一边是大于零,一边又是小于零的,如此而已... 而这个里 ...
- zoj1654 Place the Robots 二分图最大匹配
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=654 将每一行的包含空地的区域编号 再将每一列的包含空地的区域编号 然 ...
- 使用Nginx实现Tomcat集群负载均衡
概述 要解决的问题 环境准备以及问题解决思路 配置 测试 小结 一.概述 使用Nginx主要是来解决高并发情况下的负载均衡问题. 二.要解决的问题 1.最主要是负载均衡请求分发. 2.文件上传功能,只 ...
- NancyFx 2.0的开源框架的使用-AspnetBootstrapping
新建一个空的Web项目AspnetBootstrappingDemo 然后添加NuGet组件 Nancy Nancy.Hosting.Aspnet Nancy.ViewEngines.Razor 继续 ...