- shift + space = 最大化被选中的Tab
Tips:
- 只对已经停靠了的Tab 生效,游离的Tab无效!
- 如动画所示,此处的最大化指的是被选中 Tab 填充原有 Tab 面积总和。
- Unity版本:2018.2.16f1 pro .
- Shift+v 模型对齐(对齐顶点)
- 为了方便观察,全部使用Cube
- Carnac 软件在Uniy 里不怎么友好 Shift+v 就给我显示个 “v”
- Unity3D Tricks-Update20180417 - 简书
- Script Execution Order 可以拖拽加脚本
首先,很多人用不上这个功能,所以知道可以通过拖拽加脚本的就更少了吧:
- 动画为通过拖拽脚本添加 Order 规则。
- 最后不忘演示了常规按 + 号 添加脚本。
以下均为 2019年6月15日更新
- 鼠标与 3D 世界模型 的交互不需要写一个脚本 - 你知道怎么做吗?
Step1. Camera上加 PhysicsRaycaster
Step2. 被检测的3D模型上加 EventTrigger 组件
Step3. 为 EventTrigger组件添加你关心的事件类型,那么这个模型即可与光标交互啦。
Tips:
笔者承认一个脚本都不需要确实有点夸大其词,所以实际上更复杂的操作也是有必要写脚本的,当然,实现 UnityEngine.EventSystem 下的形如: IPointerEnter 接口,也是能实现 模型与光标的交互的!
- EventSystem.current.IsPointerOverGameObject() 即便返回 True 也不能表明光标下的是 UI 哟,你知道了吗?正确方式
- 很多人都说判断光标下打到的是模型还是UI 使用
IsPointerOverGameObject()
,其实在 场景中挂载了 PhysicRaycaster 的情况下是错的。因为这个 true 还可能代表你打到了 模型。(原因参考第 4 条) - 如果UI 是3D空间的,且模型使用 PhysicRaycaster 实现交互,那么别担心,Unity已经把光标下的物体进行了排序。你的事件响应对象会是正确的。
- foreach的gc问题早已在unity5.5之后的版本中解决了,你知道了吗?
笔者使用 Profiler 输出的结果已经发现没有GC啦,下次面试再说优化这点恐怕是有点乌龙了~
- 字段重命名后面板上的数据也可以不丢失:属性【FormerlySerializedAs】你知道吗?
- 还很陌生的可以看看动画哈
- 扩展阅读:Unity3D研究院编辑器之序列化的对象修改格式(十九) | 雨松MOMO
- MonoScript ,UnityEditor 无时无刻不在的类型,而你一定还不知道!
- MonoScript妙用:[Unity3D] 子类组件怎么无损替换父组件 - 简书
- 扩展阅读:Unity的 MonoScripts - 嘿嘿 - CSDN博客
- 你知道 .gitkeep 文件的存在吗? 它能解决你 Git 同步时 空文件夹导致的 同步异常哟!
- 感谢这位兄弟的问题描述:彻底解决Unity在版本控制git中多余的.meta文件! - 知乎
- 其实笔者觉得最最正确的解决方案就是为这些空文件夹加上 .gitkeep 文件。这样git就会把这个空文件夹也提交上去了哈,毕竟空文件也是组成工程架构的一部分啊,同时呢,unity里面又不会显示这个文件,多棒!现在,你对 .gitkeep 文件了解了吗 ?
2021年12月17日 更新:
新版本的Unity 已经处理了空文件夹的问题:主动为 mate 文件创建空文件夹。
- 你知道 .gitIgnore 文件中的惊叹号(!)的妙用吗?
- 除了惊叹号表示的文件/文件夹以外的所有同级文件/文件夹都将被忽略而不同步。
- Tab布局,可以开同类型的 Tab多个
- 开2个相同的Inspector Tab,一个锁定,一个不锁定,联合调试/赋值!
-
开他4个scene视角,对模型 上下左右 多画面输出,是不是模型调试的利器,就像这样(使用途中高亮的右键菜单调整视角):
- HideFlags 这个枚举用的多吗,应该还有不了解的,告诉你这个玩意超好用!
void Start () {
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
go.hideFlags = HideFlags.HideAndDontSave;
}
- 上面脚本演示的是使用方法。
- 通过为这个游戏对象指定这个标志位,它会以幽灵的形式存在于场景中,这在做某些管理器的时候经常用到。比如做一个运行时console,如果用了这个那我们的工具只会出现在game视角,其他视窗是找不到他的,多酷。
- 你知道 每一次 Unity 窗口右下角小圈圈转啊转,就代表他在编译,那编译之后的 Dll 文件(.cs脚本都会编译成dll类库)都到哪去了呢,你知道吗?
- 其实他在这里:工程根目录 - Library - ScriptAssemblies
- 扩展阅读:利用Unity3D 打包dll工具箱,只需一步~ - 简书
- 有时候你发现 你写的类明明存在,但是代码就是访问不到,这是为什么呢?
答:这是因为你把代码写到了 Plugins 文件还企图访问外部文件夹的代码导致的,怎么办?直接把代码挪出来呗!!
问:为什么写到Plugins文件夹就访问不到呢?
答:因为Unity 将 Plugins 内的脚本指定在了另一个VS工程,打包时这些 Plugins 下的脚本将会出现在另一个 DLL:"Assembly-CSharp-firstpass.dll" 中!而 Unity 已经定义好了这些 Dll 的引用关系,为了避免产生循环引用,所以你当然访问不到那个本不属于 Plugins 文件夹下的脚本啦!!
- Layer 可以动态指定不存在于编辑器配置好的 那些layer。
这种操作完全能用,只是跑起来后,编辑器的layer 下拉框上显示空白而已。
有啥好处呢,那就是在写通用插件时,不用管原有的layer写的什么以及有没有定义这样的layer,通过我们自己约定从而与用户的数据互不干涉。为什么非要搞个layer哦?为了过滤,为了省性能(譬如你在做光线检测时)。
- 打包后,dll文件明明白白在 Data文件夹的Managed 里面,但为什么启动的时候会报错说不存在这个Dll呢?
答: 原因有4:
- 使用了.Net subset。
- 打包版本与系统未指定更加兼容的x86x64模式。
- 路径中存在中文而无法被识别
- PC需要安装对应版本的 .net framework环境啦,也就是装机大神口中的游戏运行库中的.net环境哈,往往这种情况常发生在全新的系统中哦。
- Unity Inspector 上绘制的 Array/List 也是可以在任意位置插入数据和删除数据的哟,右键就好。不同于 ReorderableList 仅仅是不能排序哈!
- Light 组件指定的光晕 Flare 会穿透其他游戏对象原因是这些被穿透的游戏对象没有添加碰撞器。
笔者刚开始也是一脸懵逼鸭,觉得这哪跟哪啊,碰撞器呀空气墙啊,能挡得住吗,回答能不能靠谱点?但是再找多一个回答,又试了一下,Collider 还真是那个真相。
Sun Halo is visible throught my objects - Unity Forum
unity 5.3.4 LensFlare光晕效果 会穿过物体,怎样能避免【unity3d吧】_百度贴吧