Unity3D 4.x编辑器操作技巧
各个版本unity编辑器下载地址:
https://unity3d.com/cn/get-unity/download/archive (正式版本)
http://unity3d.com/cn/unity/qa/patch-releases (补丁版本)
http://www.ceeger.com/Unity/Resources/2011/Unity_History_download.html
4.6.2:https://unity3d.com/cn/unity/whats-new/unity-4.6.2
4.6.9p1:https://unity3d.com/cn/unity/qa/patch-releases/4.6.9p1
5.6.0f1:https://unity3d.com/cn/unity/beta/unity5.6.0f1
5.6.4f1(32bit 64bit):https://unity3d.com/cn/unity/whats-new/unity-5.6.4
5.6.5p3:https://unity3d.com/cn/unity/qa/patch-releases/5.6.5p3
2017.3.1p2:https://unity3d.com/cn/unity/qa/patch-releases/2017.3.1p2
注:如果编辑器无法下载,可先下载UnityDownloadAssistant.exe(Unity安装程序)来安装编辑器
mono版本信息
<Unity安装目录>\Editor\Data\Mono\bin>mono.exe -V
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none
<Unity安装目录>\Editor\Data\Mono\bin>monop2 --runtime-version mono.exe
runtime version: 2.0.50727.1433
using System.Reflection; Debug.Log("Version: " + Environment.Version);// Version: 2.0.50727.1433 Type type = Type.GetType("Mono.Runtime");
if (type != null)
{
MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
if (displayName != null)
{
Debug.Log("mono Runtime: " + displayName.Invoke(null, null));// mono Runtime: 2.0 (Visual Studio built mono)
}
}
License文件
C:\ProgramData\Unity\Unity_v4.x.ulf
Unity破解
http://www.ceeger.com/forum/read.php?tid=23396&page=1
基础与小技巧
(1)Unity工程的路径中不能含有中文,最好是不要含有空格,建议用英文、数字及下划线对目录和文件进行命名;最大路径长度不要超过260个字符,目录层级太深会影响Unity访问资源的速度
(2)Unity编辑器使用的是:左手坐标系 y轴向上 游戏对象(包括相机)的正方向为z轴正向
(3)Unity默认系统单位为m,场景中最小格网为1m*1m,网格层级间的倍率为10;通过菜单添加的cube边长、sphere/cylinder/Capsule的直径为1m,Plane/Cloth的直径为10m
(4)Unity与其他三维软件的单位比例关系(该比例关系可以在导入Unity工程模型文件的Inspector面板--Model标签--Meshes块的Scale Factor属性中看到):
Unity:Maya(Cinema4D) = 1:100
Unity:3dsMax(Lightwave) = 100:1
(5)图片的长宽建议为2的整数幂(注:长宽不必相等);Untiy也支持非2的整数幂的图片,对于这种图片会将其转化为一个非压缩RGBA的32位格式(注:会降低加载速度及增大游戏发布包的size)
(6)在运行模式下,对场景所有的修改都是临时的,结束运行后修改都会被还原
(7)Project搜索:robot t:Material t:Texture l:Weapon // 在Assets中搜索类型为Material或Texture、标签为Weapon、名称中包含robot字符串的资源 --大小写不敏感
(8)Hierarchy搜索:car t:Renderer t:Light t:Terrains // 在场景中搜索类型为Renderer或Light或Terrains、名称中包含car字符串的对象 --大小写不敏感
t:UILabel // 在场景中挂有UILabel脚本的对象
ref:Res/my.fbx // 在场景中搜索Assets/Res/my.fbx的对象引用 --大小写不敏感
(9)Hierarchy:①对象按字母升序依次排列 ②Prefab对象字体为蓝色,可以将修改后的Prefab对象,通过拖放到对应的Prefab文件上达到修改Prefab的目的 ③关闭的对象字体为灰色
(10)Console:选中一条log,按Ctrl+C可以复制该log到剪切板
(11)Build Settings:勾选“Development Build”,产生exe的pdb及脚本dll的mdb符号文件;
同时勾选“Development Build”和“Script Debugging”,可进行脚本调试
(12)自动刷新(不检测资源管理器、visual studio、MonoDevelop等外部程序对工程文件的修改,所以外部的修改不会引发资源文件的导入及代码的编译等)
reg add "HKCU\Software\Unity Technologies\Unity Editor 4.x" /v kAutoRefresh_h2404942332 /t REG_DWORD /d 1 /f
(13)代码编译后的托管dll及mdb调试符号文件放置在:工程名\Library\ScriptAssemblies目录中
Assembly-CSharp.dll // 游戏逻辑 Assets\Scripts目录中的脚本会编译到该模块中
Assembly-CSharp-firstpass.dll // 游戏逻辑,被引擎优先加载,可用于Assembly-CSharp.dll热更新 Assets\Plugins目录中的脚本会编译到该模块中
Assembly-CSharp-Editor.dll // 编辑器扩展 Assets下名为Editor目录中的脚本会编译到该模块中
Assembly-CSharp-Editor-firstpass.dll // 编辑器扩展,被编辑器优先加载 Assets\Plugins下名为Editor目录中的脚本会编译到该模块中
注:Assembly-CSharp.dll、Assembly-CSharp-firstpass.dll使用的是Unity Subset v3.5类库,Assembly-CSharp-Editor.dll、Assembly-CSharp-Editor-firstpass.dll使用的是Unity Full v3.5类库
这4个是不同裁剪程度的Unity .net类库:full(全版本) > Subset(子集版本) > Micro(微版本) > Web(Web版本),以满足不同平台的需要
各个版本中包含的类与函数列表可参考:https://docs.unity3d.com/410/Documentation/ScriptReference/MonoCompatibility.html
例如:受浏览器沙盒限制,很多访问其他进程、本地文件等不安全的行为都是不允许的,因此Unity Web v3.5类库中把这相关的函数都删除掉了
(14)资源文件的cache按照其guid(十六进制)的开头2位数字分类放置在:工程名\Library\metadata目录中
(15)是否允许Attach调试
reg add "HKCU\Software\Unity Technologies\Unity Editor 4.x" /v AllowAttachedDebuggingOfEditor_h615392104 /t REG_DWORD /d 1 /f
(16)点击菜单“Edit” - “Project Settings” - “Editor”
使用可见meta文件(Visible Meta Files)来管理Assets目录中的资源(每个资源都会有一个guid,资源之间的关联通过设置guid的引用来实现)
注1:若不使用meta文件,则资源的配置信息存放在Library目录的某个文件中
注2:复制资源时,千万不要复制meta文件,否则会出现同ID的meta文件,导致新做的资源损坏
注3:想要重命名资源,而不丢失引用关系,将资源与对应meta文件一起重命名即可
强制使用文本(Force Text)来存储Assets目录中的资源(如:.unity、.prefab、.mat、.anim等)及ProjectSettings目录中的配置信息(如:.asset)
(17)后台静默运行Unity编辑器重建Library缓存 // 下面示例缓存所在路径:Test001\Library
Unity.exe -quit -batchmode -projectPath "C:\Unity4.6.9p1Projects\Test001" -logFile "C:\ReBuildProjectCache.log"
(18)Unity4.x画面渲染使用的是AutoDesk 的Beast 技术;Unity5.x阶段彻底放弃了Beast 技术,改为使用和UrealEngine 一样的一款第三方渲染引擎Enlighten 来进行画面渲染
快捷键
(1)启动Unity编辑器时,立即按住alt键,会弹出Project Wizard对话框,让用户可以选择并打开其他工程(注:该方法不会改变Unity的默认设置)
若想每次启动都弹出Project Wizard对话框:可点击菜单“Edit” - “Preferences...”弹出的对话框General标签页下,通过勾选“Always Show Project Wizard”来开启
(2)shift + 空格 // 鼠标在任意视图窗口中悬停,按空格可以将该视图窗口最大化,再按空格恢复回之前的布局 注:unity4.3前的版本为:空格
(3)f // 将选中的物体居中(当前场景相机所观察的中心点位置设置为物体中心)并全貌显示
(4)ctrl + shift + f // Align With View 移动选中的物体到当前场景相机所在位置
(5)ctrl + alt + f // Move To View 移动选中附体到当前场景相机所观察的中心点位置
(6)alt + 点击节点 // 完整展开整个树节点
(7)ctrl + p // 运行/结束游戏
(8)ctrl + shift + p // 暂停/继续游戏
(9)ctrl + alt + p // 逐帧运行游戏
(10)操作Scene场景工具:Hand(Q)、Translate(W)、Rotate(E)、Scale(R)、Rect Handle(T)
注:Rect Handle模式下:①可通过拖动控制矩形上的边,对目标对象进行1个方向上缩放
②可通过拖动控制矩形上的点(有2种操作形态),对目标对象进行2个方向上缩放和绕着垂直矩形所在的轴进行旋转
③点击拖动矩形的中心对目标对象进行移动
另外,当前控制矩形会根据当前相机的方向来选择是使用xoy、yoz还是zox平面矩形(尽量选择与当前相机的方向垂直的那个平面矩形)
(11)对象的轴心点:包围盒中心/对象自身的原点(Z)
(12)坐标模式:世界坐标/局部坐标(X)
(13)2D模式:Alpha2(非小键盘2)
Scene透视图导航
一、鼠标滑动方式
(1)平移 -- 按住鼠标滚轮拖动(注:相机的旋转角始终不变)
向前:相机向下滑动【下降】;向后:相机向上滑动【上升】 注:改变相机在世界坐标下的z坐标值
向左:相机向右滑动【右移】;向右:相机向左滑动【左移】 注:改变相机在世界坐标下的x、y坐标值
(2)旋转 -- 按住鼠标右键拖动(注:相机的位置、横滚角始终不变)
向前:相机向上转向【抬头】;向后:相机向下转向【低头】 注:改变相机的俯仰角
向左:相机向左转向【左转】;向右:相机向右转向【右转】 注:改变相机的方位角
(3)旋转 -- Alt+拖动左键,进行360°镜头旋转
注:按f对物体居中后,旋转中心点则为物体的中心
(4)缩放 -- 鼠标滚轮(Alt+拖动右键)(注:相机的旋转角始终不变)
向前滚(向右或向下拖动右键):沿着相机中心轴线向前滑动【前进】 注:在相机局部坐标系下,向前平移相机
向后滚(向左或向上拖动右键):沿着相机中心轴线向后滑动【后退】 注:在相机局部坐标系下,向后平移相机
二、FPS游戏方式
按住鼠标右键,通过键盘W、S、A、D,进行【前进】【后退】【左移】【右移】 注:在相机局部坐标系下,前后左右平移相机
按住鼠标右键,通过键盘E、Q,进行【上升】【下降】 注:改变相机在世界坐标下的z坐标值
注:若同时按住shift,会加大每次移动的位移
工程中的一些特殊目录
Editor
Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。
Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。
比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为实际运行时我们只需要编辑器生成的文件,而不需要编辑器的核心代码。
Editor Default Resources
Editor Default Resources注意中间是有空格的,它必须放在Project视图的根目录下,如果你想放在/xxx/xxx/Editor Default Resources 这样是不行的。
你可以把编辑器用到的一些资源放在这里,比如图片、文本文件、等等。它和Editor文件夹一样都不会被打到最终发布包里,仅仅用于开发时使用。
你可以直接通过EditorGUIUtility.Load去读取该文件夹下的资源。
TextAsset text = EditorGUIUtility.Load("test.txt")as TextAsset;
Debug.Log(text.text);
Gizmos
我觉得这个文件夹其实没什么用处,如下代码所示它可以在Scene视图里给某个坐标绘制一个icon。它的好处是可以传一个Vecotor3 作为图片显示的位置。
参数2就是图片的名子,当然这个图片必须放在Gizmos文件夹下面。
这里还是要说说OnDrawGizmos()方法,只要脚本继承了MonoBehaviour后,并且在编辑模式下就会每一帧都执行它。发布的游戏肯定就不会执行了,它只能用于在scene视图中绘制一些小物件。
比如要做摄像机轨迹,那么肯定是要在Scene视图中做一个预览的线,那么用Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不过了。
void OnDrawGizmos()
{
Gizmos.DrawIcon(transform.position, "0.png", true);
}
Plugins
如果做手机游戏开发一般 andoird 或者 ios 要接一些sdk 可以把sdk依赖的库文件 放在这里,比如 .so .jar .a 文件。这样打完包以后就会自动把这些文件打在你的包中。
Plugins/x86对应windows 32位版本,Plugins/x86_64对应windows 64位版本,Plugins/Android对应Android版本,Plugins/iOS对应iOS版本。
Resources
可以在根目录下,也可以在子目录里,只要名子叫Resources就可以。比如目录:/xxx/xxx/Resources 和 /Resources 是一样的,无论多少个叫Resources的文件夹都可以。
Resources文件夹下的资源不管你用还是不用都会被打包进.apk或者.ipa
Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取。
Resources.LoadAssetAtPath() :它可以读取Assets目录下的任意文件夹下的资源,它可以在编辑时或者编辑器运行时用,它但是它不能在真机上用,它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。
AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。
我觉得在电脑上开发的时候尽量来用Resource.Load() 或者 Resources.LoadAssetAtPath() ,假如手机上选择一部分资源要打assetbundle,一部分资源Resource.Load().
那么在做.apk或者.ipa的时候 现在都是用脚本来自动化打包,在打包之前 可以用AssetDatabase.MoveAsset()把已经打包成assetbundle的原始文件从Resources文件夹下移动出去在打包,
这样打出来的运行包就不会包行多余的文件了。打完包以后再把移动出去的文件夹移动回来。
StreamingAssets
这个文件夹下的资源也会全都打包在.apk或者.ipa 它和Resources的区别是,Resources会压缩文件,但是它不会压缩原封不动的打包进去。
并且它是一个只读的文件夹,就是程序运行时只能读 不能写。它在各个平台下的路径是不同的,不过你可以用Application.streamingAssetsPath 它会根据当前的平台选择对应的路径。
有些游戏为了让所有的资源全部使用assetbundle,会把一些初始的assetbundle放在StreamingAssets目录下,运行程序的时候在把这些assetbundle拷贝在Application.persistentDataPath目录下,
如果这些assetbundle有更新的话,那么下载到新的assetbundle在把Application.persistentDataPath目录下原有的覆盖掉。
因为Application.persistentDataPath目录是应用程序的沙盒目录,所以打包之前是没有这个目录的,直到应用程序在手机上安装完毕才有这个目录。
StreamingAssets目录下的资源都是不压缩的,所以它比较大会占空间,比如你的应用装在手机上会占用100M的容量,那么你又在StreamingAssets放了一个100M的assetbundle,那么此时在装在手机上就会在200M的容量。
Unity3D 4.x编辑器操作技巧的更多相关文章
- vim常用操作技巧与配置
vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中 ...
- Sublime2 Text编辑器使用技巧
Sublime2 Text编辑器使用技巧 ------------------------------------软件使用----------------------------------- ...
- ABBYY FineReader操作技巧
使用ABBYY FineReader OCR文字识别软件工作即快速又简单,软件自身常常可以自行处理一切工作,用户只需点击几下软件中的‘主要’按钮.不过,有时要想获得更好的质量结果,或者解决某个不寻常的 ...
- 用ArcGIS?37个Arcmap常用操作技巧可能帮到您
1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关. 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Sn ...
- Jupyter notebook操作技巧
学习笔记:Jupyter notebook操作技巧 一.jupyter notebook简介.用途.优势和缺点 二. 单元Cell: 三.操作技巧 - 给Jupyter换主题 - 笔记本扩展(nbex ...
- 用Excel做出比肩任务管理软件的操作技巧
用Excel做出比肩任务管理软件的操作技巧 在项目管理中,网上有各种各样的工具可以选择,到底用哪个,曾一度困扰着我.我是一个有轻度强迫症的人,总是喜欢试用各种各样的系统,以比较他们之间的不同,试图选择 ...
- Jquery数组操作技巧
Jquery对数组的操作技巧. 1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不 ...
- Vi操作技巧
Vi操作技巧: :nu 显示当前所在行的行号 :set nu 显示全部行号 :set nonu 取消显示行号 /字符串 查询字符串,按n查询下一个,按N查询上一个 持续 ...
- [eclipse] 三个操作技巧
[eclipse] 三个操作技巧 1.快捷键Ctrl+Shift+i:Debug调试中直接获取方法的返回值 在下图代码中,想知道getHost(),则在调试时运行完该句代码后,选中"urlU ...
随机推荐
- 函数式编程之-Partial application
上一篇关于Currying的介绍,我们提到F#是如何做Currying变换的: let addWithThreeParameters x y z = x + y + z let intermediat ...
- leetcode — combination-sum
import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...
- MyEclipse2017破解设置与maven项目搭建
下载 版本:MyEclipse2017 Stable 2.0 百度网盘链接:https://pan.baidu.com/s/1vpIMKq9FfMMbhXzkmft_8A 密码:xfbv myecli ...
- 【SqlServer系列】数据库三大范式
1 概述 一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分:第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关 ...
- Jenkins入门之导航操作
通过前面章节讲解我们已经创建了构建任务,我们已经进入了三层目录,如何回到上一级界面?如何直接回到主界面?如何知道我当前所在的位置? 我们看一下红框框选的部分,为Jenkins导航树,从这个导航树,很多 ...
- JVM中对象的回收过程
当我们的程序开启运行之后就,就会在我们的java堆中不断的产生新的对象,而这是需要占用我们的存储空间的,因为创建一个新的对象需要分配对应的内存空间,显然我的内存空间是固定有限的,所以我们需要对没有 ...
- Java 趣史-差点把 Java 命名成了 Silk(丝绸)
差点把 Java 命名成了 Silk(丝绸) Java 命名的由来 Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名.Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆). ...
- Linux命令-基本操作和软件安装
配置JDK环境:JAVA_HOME:D:\software\JDK1.7Path:%JAVA_HOME%\bin;%JAVA_HOME%\lib; ls(查看当前目录下的文件及文件夹)sh initN ...
- [转]分别使用Node.js Express 和 Koa 做简单的登录页
本文转自:https://blog.csdn.net/weixin_38498554/article/details/79204240 刚刚学了Koa2,由于学的不是很深,并没有感受到网上所说的Koa ...
- 从零开始学安全(十五)●DHCP服务
DHCP,全名为:Dynamic Host Configuration Protocol,动态主机配置协议,它是一种基于UDP的局域网协议,其作用主要有:给主机自动分配IP地址,管理员通过该协议管理内 ...