Unity中容易被忽略的小技巧
今天在游戏蛮牛上看到慕容小匹夫的一篇文章,感觉对自己现在的水平很实用,就给转载了过来,以便日后好温习一下。
这里还是要支持原创作者,原文地址在这里
一、编辑器染色
一个常见的工作情景是我们在调整场景内的某些组件参数时,没有注意到自己是在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视图一样的设置呢?这条技巧就是关于这个的。
Shift + Ctrl + f
上面的快捷键就可以把Scene视图中的数据复制给选中的摄像机。
当然,除了使用快捷键,我们还可以在菜单中选择相应的操作。
GameObject->Align With View
也可以达到相同的效果。

(左边Scene视图,右边Game视图)
五、拓展编辑器
这一部分并非来自某一个技巧,而是和拓展编辑器相关的小技巧的集合。
在Unity中拓展编辑器,往往需要用到C#的各种特性(attribute)。
例如,我们可以使用[RangeAttribute]在Inspector视窗上显示一个滑动条。
[Range(,)]
public int publicInt;

如果,我们嫌Inspector视窗上显示的各个字段太混乱没有章法,那么我们可以使用另外两个特性来帮助我们对显示在Inspector上的字段进行整理:[SpaceAttribute]和[HeaderAttribute]。
#region 字段
[Header("测试数据1")]
[Range(,)]
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
Unity中容易被忽略的小技巧的更多相关文章
- Fiddler使用过程中容易忽略的小技巧
fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...
- Django中的ORM框架使用小技巧
Django中的ORM框架使用小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Django对各个数据提供了很好的支持,包括PostgreSQL,MySQL,SQLite ...
- 【前端】javascript中10常用的个小技巧总结
javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了 ...
- Java中splite的用法与小技巧
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧.如执行:"2|33|4".split(&quo ...
- Python+selenium自动化脚本编辑过程中遇到的问题和小技巧
应该也不算是问题和技巧,算是实践中学习到的Python,记录下,也不定时更新 1.通过截取url判断 实例: self.assertEqual(self.broswer.current_url[sel ...
- javascript中关于&& 和 || 表达式的小技巧分享
如果你还是新手, 而且读完所有这些技巧的详解和每种技巧是如果工作的以后运用它们, 你会写出更加简练高效的JavaScript程序. 确实, JavaScript高手已经运用这些技巧写出了很多强大, 高 ...
- 一些JavaScript中的DOM的优化小技巧
在进行DOM优化时需要关注的问题有:修改DOM的时候,会引起页面的重排,重绘.因为JS是单线程执行的,那么在重排重绘的过程中可能会阻塞用户的操作.为了更好的用户体验,必须要严格控制这些操作. 一.对象 ...
- vs中不得不会的一些小技巧(1)——细说查找
最近在改公司里面古老的asp代码,不说文件有1w个,起码也有7,8千,而且文件里面include一个嵌套一个...当某天jira平台 上出现了需要你改的bug的时候,甚至都不知道这个错误在哪个页面,更 ...
- js-分享107个js中的非常实用的小技巧(借鉴保存)
转载原文:http://***/Show.aspx?id=285 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:doc ...
随机推荐
- HDU5343:MZL's Circle Zhou(SAM,记忆化搜索DP)
Description Input Output Sample Input Sample Output Solution 题意:给你两个串,分别从两个里面各选出一个子串拼到一起,问能构成多少个本质不同 ...
- 1692. [USACO07DEC] 队列变换【后缀数组+贪心】
Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席 ...
- [JSOI2018]潜入行动
题目 我好菜啊,嘤嘤嘤 原来本地访问数组负下标不会报\(RE\)或者\(WA\),甚至能跑出正解啊 这道题还是非常呆的 我们发现\(k\)很小,于是断定这是一个树上背包 发现在一个点上安装控制器并不能 ...
- shell基础--变量的数值计算
变量的数值计算 1.$((表达式)) (1).实验1 [root@~_~ day4]# cat test.sh #!/bin/bash a=6 b=2 echo "a-b=$(($a-$b) ...
- TensorFlow函数(八)tf.control_dependencies()
tf.control_dependencies(control_inputs) 此函数指定某些操作执行的依赖关系 返回一个控制依赖的上下文管理器,使用 with 关键字可以让在这个上下文环境中的操作都 ...
- Spring Cloud Eureka 学习记录
SpringCloud版本 <groupId>org.springframework.cloud</groupId> <artifactId>spring-clou ...
- django restframework 简单总结
官方文档:http://www.django-rest-framework.org/ model.py class Snippet(models.Model): created = models.Da ...
- Python django 404页面配置和debug=false 静态文件配置 django版本1.10.5
django设置404页面 1.设置settings文件 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']或者 ALLOWED_HOST ...
- java 解析http user-agent 信息
解析http user-agent信息,使用uasparser-0.6.1.jar和jregex-1.2_01.jar两个包 import cz.mallat.uasparser.OnlineUpda ...
- 一份可以落地靠谱iOS开发规范
列出来的都是个人觉得在团队合作,代码阅读,代码维护中比较重要的一些点,没有什么空格 间距华而不实的东西在里面.涉及 命名规范.编码规范.代码管理规范 命名规范 项目名都遵循大驼峰命名.例如:MSMob ...