针对 VRChat 的 Unity 编辑器讲解【副本】
前言
本书为Unity编辑器教程的百科版,适用于已经具有Unity编辑器基础的学习者,因此主要包含非基础内容
Unity 体积庞大,功能繁多,因此仅对常用于VRChat创作的Unity工具功能做详解,且仅限制在当前VRC使用的Unity版本,无法完全覆盖所有的 Unity 引擎知识
本书不对阅读顺序有要求,您可以根据自己的需求,从目录中挑选出自己想要的内容单独学习
在使用 Unity 开发 VRChat 内容的途中您会不可避免地碰到各种各样的问题,我们衷心希望您以耐心负责的心态了解其中的困难并坚持下来,创作出自己心中的内容。
我们希望您在学习过程中掌握 通过搜索解决问题,阅读文档和技术文章,以及科学提问 的能力,这将会为您的创作之路开辟一切可能。
在遇到问题时,您可以随时向 VRCD 玩家社区:750258838 内的大家提出问题请求帮助,但是我们希望您可以尽量地让问题易于解答,可参照以下提问守则。
您可能会在学习和创作过程中遇到各种难以解决的问题,在遇到问题时,您可以放心大胆地向群里的大家求助~ 但是在提问之前,确保您能尽量地提出“优质问题”,您的问题应该能让大家方便地定位问题原因所在。 尽量遵循以下“好问题”守则:
- 明确问题场景:请详细说明您在哪个具体环节遇到了困难,这会比笼统的提问更有帮助。 比如:“我希望让我的模型的头发飘动起来,在尝试为头发添加动骨时遇到问题”要比“我的头发不会动怎么办”更有帮助。
- 尽可能详细地描述您在问题前和问题后的操作:这包括您在遇到问题前,和遇到问题后的操作,可以让大家对您的情况有一个更深入的了解。 比如:“我在我的头发中骨骼添加了一个VRC Phys Bone组件,但是它并没有生效” “我尝试着修改了组件中的这些参数,但问题并没有解决”
- 提供您的出问题时的截图:您应该尽量附上截图,这有助于群友定位您的环境,或者了解您问题的表现,原因等。
- 请在有空时询问问题:为了节省双方时间,您应该在确保自己后续有时间补充问题细节,回答其他人问题的时候再提问 这些小守则并不是强制性的,但遵循它们可以大大提高您的问题得到解决的几率。
同时,我们鼓励您分享自己的解决方案和各种想法,一起促进社区成长!~
Unity菜单栏和工具栏的功能解析
进入 Unity 编辑器,可以看到Unity编辑器的基本界面,我们将逐一对其中的非基础内容进行更进一步的解释
菜单栏(Menu)
此区域待完成
右上角小工具栏
从左向右:
- 回溯历史(UdonHistory):操作的历史,可以在这里看到之前进行的操作,然后选择回溯,和Ctrl+Z相同
-
全局搜索(Global Search):可以在众多范围中进行搜索
如图所示,搜索范围涵盖了工程内能覆盖的大部分,您也可以在Unity官方文档中找到对这个工具的更多解释
- 场景中图层的可见性(Which layers arevisible in the Scene views),在这里调整场景中可以看见哪些图层,您可以在图层章节(未完成)找到对图层概念的更多解释
- 布局管理菜单(Select Editor Layout):在这里管理您的布局,图中即为默认布局
文件管理
一提到 Unity 中的文件管理,我们就会想到奇形怪状不同格式的文件,其中可能包含图片,脚本,模型,音频,功能组件等数不清的文件种类,这些文件的最终目的则是在于互相配合,以实现一个完整的项目。
电脑自己倒是对这些事无感,只要能沿着路径和关键词找到就都能凑合着用。
但使用和安排处理文件的是人,在效率和耐心的要求下,人类需要尽可能保证所有对应文件能够被快速找到,这也是 文件管理 所要达成的究极目标。
Unity 项目在哪里,长什么样?
您是否还记得您选择在哪里保存了您的项目?利用 文件资源管理器 挖出您当前项目本体,就是那个与您的项目名称同名的文件夹。
双击进入文件夹,我们通常都会发现以下的文件:
这个文件夹记录并保存着您项目中所有的资源和设置,所以当我们希望将我们的项目分享给他人时,除了将必要文件内容打包为 unitypackage 这一个方法外(我们将在之后讲解),最简便的方法便是将整个项目文件夹打包为压缩包。只要版本匹配,另一端就可以通过这个压缩包加载并访问所有的项目设置与资源。
项目窗口(Project)
项目窗口(Project)是您在 Unity 中导航和查找资源及其他项目文件的主要方式。您可以使用这个窗口浏览/导入/设置/删除项目的所有资产和资源,也可以快捷地从外部导入各种资源,并在项目窗口中对资源进行再分类。
而通过项目窗口(Project)管理的文件夹正是 项目文件 中的 Assets 文件夹,任何在项目窗口所做的更改。
- 可视化文件管理器,占据着项目窗口中最大面积的区域,其优势在于可以预览许多类型的文件,文件辨识度更高,在同一文件目录下查询指定文件时效率更高。
- 树状文件列表,在项目窗口左侧,其优势在于可以快速了解文件之间的父子级关系,快速定位文件。
- 文件搜索框,在项目窗口右上角,您可以通过输入文件名称来搜索文件,点击左上角的目录标签可以切换搜索范围至您指定的目录。
创建文件
总共有两种方法在 Unity 中创建文件。
- 点击项目窗口(Projects)左上角
+
号以创建新的文件。 - 右键点击可视化窗口的空白处,点击 Create New 以创建新的文件。
图中演示了通过这两种方式新建一个文件夹,也可以通过这个方式创建其他项目中会需要的文件类型。
导入文件
将外部文件导入至项目中。
- 鼠标左键长按拖拽目标文件至 项目窗口(Project)并松开左键。
- 在电脑中复制或剪切目标文件,找到对应的项目文件夹并直接粘贴。
搜索文件
点击项目窗口右上角的搜索框即可进行搜索。
在搜索内容时,项目窗口左上角会出现如下图的选择项,这个选项可以帮您快速寻找和排查指定内容。
- All:搜索包含 Phackage 和 Asset 的全部内容。
- In Packages:仅搜索 Package 内容。
- In Assets:仅搜索 Asset 内容。
- ‘Packages’:不太清楚,待补充。
如果您想要在文件浏览器中打开某一指定文件,您可以将鼠标放在文件之上,单击右键,选择“在资源管理器中打开(Show In Explorer)”即可。
资源包管理
包这个概念在 Unity 中一直都是十分拧巴的概念。
是一种包文件格式,Unity 官方手册管它叫《资源包》,虽然听着随便了一些,但也充分表明了 unitypackage 在 Unity 中的作用。
导入资源包
-
直接打开
鼠标左键双击,在 Unity 编辑器弹出的导入界面中确认导入文件。
-
拖拽文件到 Unity 窗口
鼠标长按拖拽目标文件至 项目窗口(Project) 并松开左键,在 Unity 编辑器弹出的导入界面中确认导入文件。
-
传统派导入
下载 Assets > Import Package > Custom Package。此时会显示文件浏览器,提示您找到
.unitypackage
文件。在文件浏览器中,选择要导入的文件,然后单击 Open。
Import Unity Package 窗口将显示已选择的资源包中的所有项目,可以直接安装。
游戏对象编辑
什么是游戏对象?
yoo what?像这种的?
我们在这里提到的所谓“游戏对象”指的是 Unity 中的 GameObject。游戏对象可以指代任何一个能够存在于场景(Scene)中的事物,是 Unity 的基础对象,表示角色、道具和景物。
这并非很难理解的概念,我们可以将游戏对象理解成为一个篮子,里面可以装有各式各样的东西,装着菜就叫菜篮子,装着水果就叫水果篮子,装着蛋就叫。。。
我们可以从此发现,游戏对象实际的用途取决于它所装着的东西——也就是组件(Components),而游戏对象本身作为组件的容器,在组件的帮助下得以和项目中的其他事物产生交互。
游戏对象之间的关系(父子级)
父子级 的概念十分通俗易懂,一个父亲能有许多个孩子,但一个孩子只能拥有一个爹。
您可以简单将 游戏对象 认作一个文件夹,一个对象可以包含继承其属性的其他游戏对象。可以将游戏对象链接在一起以帮助移动、缩放或变换游戏对象的集 合。移动顶层对象或父游戏对象时,也会移动所有子游戏对象。
您可以在 Hierarchy 里直观的看到场景内游戏对象之间的父子级关系,举个例子,这是一组场景内的椅子,我创建了一个名为 bar-chairs 的游戏对象,并把每一个 Chairs_Bar_Chairs_1 (?) 全部塞进了新创建的游戏对象中,现在我可以通过拖动 父级-bar-chairs 来 统一拖动其余的 子集- Chairs_Bar_Chairs_1 (?) 。
什么是组件?
游戏对象是组件的载体。而组件又定义了该游戏对象的行为。
这么说可能有点模糊,简单点来说,组件决定了一个游戏对象的功能,改变这一游戏对象的组件属性便改变了这一游戏对象的功能和实际表现。
举个例子,让我们创建一个 方块 来看看它的组件都有些什么:
形变(Transform) 组件:此组件定义游戏对象在场景中的 位置(Position)、旋转(Rotation) 和 缩放(Scale),Unity 中的每个游戏对象都有 。
网格渲染(Mesh Renderer)组件:将物体渲染出来的组件,简单来说是 让物体可以被看见。
方块碰撞(Box Collider)组件:为物体赋予方块形状的碰撞体积的组件,简单来说是 让物体可以被碰见。
材质(Material)组件:配合网格渲染组件,让物体展示出某种特定的材质和质感。
让我们再创建一个 直射灯光,来看看它有着什么样的组件。
形变(Transform) 组件:此组件定义游戏对象在场景中的 位置(Position)、旋转(Rotation) 和 缩放(Scale),Unity 中的每个游戏对象都有 。
灯光(Light)组件:此组件定义该游戏对象在场景内的灯光属性,您可以利用这些属性改变光的大小,强度等元素。
运行与排错
在本章节,我们将了解并学习如何在不上传 VRChat 项目的前提下使用现有的工具和手段完成项目测试。
在 Unity 内进行项目测试(快速测试)
VRChat 为您提供了一个可以在 Unity 内快速测试项目的方法,即 客户端模拟器(Client Sim)。
您可以将其用于测试您所搭建的内容,检查变量,简而言之,您可以十分方便的在与 VRChat 极为相似 的环境中运行您的项目,以便于进行各式各样的检查和测试。
之所以上文描述为“极为相似的环境”,是因为这个客户端模拟器在某些情况下仍有其局限性,您可能会发现某些视频播放器无法在客户端模拟器中正常使用,某些插件可能无法正常运作,更不用说在模拟器内无法进行网络同步测试等需要多端配合的测试。
您可以通过 客户端模拟器(Client Sim)官方文档 了解与其相关的更多信息。
怎么做?
在 Unity 界面的上排中心处,您可以发现一排播放按钮,点击左侧 ▶️播放 按钮即可运行 客户端模拟器 。
稍等片刻,您将被自动切换至 游戏窗口(Game),点击中间的 Accept 按钮即可开始像在 VRChat 一样进行测试。
当您想要 退出测试 时,点击 esc 键,在弹出的窗口中点击 Close Menu 按钮即可。
如果您想要 回到初始位置,点击 esc 键,在弹出的窗口中点击 Respawn 按钮即可。
如果您想要 调整您的身高,点击 esc 键,在弹出的窗口中找到 Player Height 滑条并左右调整即可。
使用 VRChat 客户端进行项目测试
此方法相较于前者更加准确,100%展现您的项目在 VRChat 中的表现,不过耗时较长。
此方法一般用于等待补充,
等待补充使用SDK部分的内容。
推荐您使用 VRC 快捷启动工具 (VRCQL) 进行测试,
- 启动 VRCQL,切换到 Local,打开 "构建时启动所有选定的配置文件"。
- 将客户端数量设置为0,然后构建您的世界。
- VRCQL 自动启动具有不同配置文件的客户端(这意味着您可以让不同的用户加入同一个本地实例,这是 SDK 无法做到的)并应用自动布局。
- 之后,如果您正在使用 watch worlds,您可以直接关闭 VRCQL,或者您可以关闭所有客户端并再次构建和测试。
如何给项目排错?
官方解释到colsole(控制台窗口)显示生成的错误、警告和其他消息。这些错误和警告可帮助您查找项目中的问题,例如脚本编译错误。
这一个窗口的作用理解起来可能会稍加抽象,但对于接触过代码的新手来说无疑是再熟悉不过的功能区域。我们知道一个程序运行时会向外发送数据,而colsole(控制台窗口)则会接收这些信息并且将它显示出来,它是一个用户用来快速调试游戏数据的工具。
而对于大部分不涉及编码直接输出到colsole(控制台窗口)的使用场景,它提供了一个能够让插件自动报错的场地,它可以让您以最快的速度了解到Unity项目是哪些环节在运行时出现了错误,以及哪些插件出现了等的关键信息。
在默认情况下,colsole(控制台窗口)的位置在project(项目窗口)的右边,点击左上角的两个按钮以切换至不同的窗口。
黄色三角警示标 意味着有错误,但不严重,不影响游戏运行。
红色八边形警示标 意味着有错误,并且比较严重,无法运行游戏。
以您可以看到的这个黄色的三角警示标为例,这个警告信息的大致含义为“Visual Studio(一款编程开发工具)有了新的版本,请点击以更新。”。一听就十分的无关紧要,而事实也确实如此。
收集问题并提问
您可能会在学习和创作过程中遇到各种难以解决的问题,在遇到问题时,您可以放心大胆地向群里的大家求助~ 但是在提问之前,确保您能尽量地提出“优质问题”,您的问题应该能让大家方便地定位问题原因所在。
尽量遵循以下“好问题”守则:
1、明确问题场景:请详细说明您在哪个具体环节遇到了困难,这会比笼统的提问更有帮助。 比如:“我希望让我的模型的头发飘动起来,在尝试为头发添加动骨时遇到问题”要比“我的头发不会动怎么办”更有帮助。
2、尽可能详细地描述您在问题前和问题后的操作:这包括您在遇到问题前,和遇到问题后的操作,可以让大家对您的情况有一个更深入的了解。 比如:“我在我的头发中骨骼添加了一个VRC Phys Bone组件,但是它并没有生效” “我尝试着修改了组件中的这些参数,但问题并没有解决”
3、提供您的出问题时的截图:您应该尽量附上截图,这有助于群友定位您的环境,或者了解您问题的表现,原因等。
4、请在有空时询问问题:为了节省双方时间,您应该在确保自己后续有时间补充问题细节,回答其他人问题的时候再提问 这些小守则并不是强制性的,但遵循它们可以大大提高您的问题得到解决的几率。
同时,我们鼓励您分享自己的解决方案和各种想法,一起促进社区成长!~
常用快捷键
善用快捷键可以帮助我们节省非常多的时间,没有人讨厌偷懒,不是吗?
如果快捷键没有冲突,Unity 将执行以下快捷键对应操作。
移动视角
聚焦到 对象层级 选择的物体 | F |
—— 萌新推荐 —— | |
向前 / 后推进 | 按住 鼠标右键 + W / 按住 鼠标右键 + S |
向左 / 右平移 | 按住 鼠标右键 + A / 按住 鼠标右键 + D |
向上 / 下平移 | 按住 鼠标右键 + Q / 按住 鼠标右键 + E |
向四周观察 | 按住 鼠标右键 + 拖动 |
提高 / 降低移动灵敏度 | 按住 鼠标右键 + 鼠标滚轮 向上 / 按住 鼠标右键 + 鼠标滚轮 向下 |
—— 大佬请用 —— |
|
选取中心 | 鼠标中键 |
围绕中心旋转 | Alt + 按住 鼠标左键 + 拖动 |
向四周平移 | Alt + 按住 鼠标中键 + 拖动 |
放大 / 缩小 | Alt + 按住 鼠标右键 + 拖动 |
场景工具
视角移动工具(ViewTools) | Q | |
变换移动工具(MoveTools) |
W | |
变换旋转工具(RotateTools) | E | |
变换缩放工具(ScaleTools) | R | |
矩形变换工具(RectTools) | T | |
变换工具(TransformTools) | Y |
对象层级
剪切(Cut) | Ctrl + X |
复制(Copy) | Ctrl + C |
粘贴(Paste) | Ctrl + V |
作为子集粘贴(Paste As Child) | Ctrl + Shift + V |
复制并粘贴(Duplicate) | Ctrl + D |
删除(Delet) | Del |
重命名(Rename) | F2 |
场景播放控制
播放模式(Play) | Ctrl + P | |
暂停运行(Pause) | Ctrl + Shift + P |
窗口功能介绍
场景窗口(Scene)
场景窗口(Scene)是您在 Unity 能够 最直观地摆放和设置对象 的窗口,您可以在场景窗口中观察整个场景,做到快速设计,快捷拖拽,变形,搭建物体。
场景工具
您可以在场景窗口左上角发现一列的图标,这些是用于处理场景窗口内游戏对象的快捷工具,不同的快捷图标代表着不同的操作功能。
场景工具(Tools)
在 场景窗口 的上方条栏左右处分别有不同的按钮和功能,让我们从左至右介绍。
图标 |
名称 | 功能说明 |
视图模式 | 不同的选项代表不同的渲染模式(大概就是看到的画面的效果不同),不了解选项的具体含义没什么问题,如果您在观察视图时遇见了一些没法好好分析画面的情况,只需要在众多选项中一个一个选,选到自己如意的直接使用即可。 | |
2D视图 | 当2D按钮亮起时画面无透视点,整体内容按照某一轴平铺(降维打击),当2D按钮熄灭时为3D模式,画面有透视点并且画面内容遵循透视效果。 | |
灯光按钮 | 这按钮的功能并不类似于一次性开关场景内的灯光,而是切换灯光的映射方式。当灯光按钮亮起时,场景照明使用的是默认的场景灯光,当灯光按钮熄灭时,场景照明依赖于从摄像头方向发射的光源(类似于眼睛在发光)。 | |
音频按钮 | 点亮音频按钮可以听见场景内的音频声效,熄灭时则为静音。 | |
层级列表 | 点击层级列表图标左侧的倒三角展开,您就可以看见不同的效果层级,单击一下点掉左侧的对勾即可屏蔽相关效果层级,十分的爽滑。(如果不知道这些是什么,随便点一点玩一玩就大概知道每个模式的用处了。) | |
工具控制柄模式切换
网格可见性(Grid Visual)
用于控制规则网格,用于场景中的位置参考,可以点击图标对此网格进行开关
网格平面(Grid Plane):选择网格应该忽略的轴向,默认为忽略Y轴
透明度(Opacity):网格的透明度
移动到(Move To): 到控制柄(To Handle)将网格移动到所选游戏对象的控制柄位置,和到原点(To Origin)将网格移动回默认位置
游戏(Game)
控制台(Console)
控制台窗口(Colsole)显示生成的错误、警告和其他消息。这些错误和警告可帮助您查找项目中的问题,例如脚本编译错误。
这一个窗口对于接触过代码的新手来说无疑是再熟悉不过的功能区域。我们知道一个程序运行时会向外发送数据,而colsole(控制台窗口)则会接收这些信息并且将它显示出来,它是一个用户用来快速调试游戏数据的工具。
而对于大部分不涉及编码直接输出到colsole(控制台窗口)的使用场景,它提供了一个能够让插件自动报错的场地,它可以让您以最快的速度了解到Unity项目是哪些环节在运行时出现了错误,以及哪些插件出现了等的关键信息。
图标 |
名称 | 功能说明 |
黄色三角警示标 | 意味着有错误,但不严重,不影响游戏运行。 | |
红色八边形警示标 | 意味着有错误,并且比较严重,无法运行游戏。 |
以您可以看到的这个黄色的三角警示标为例,这个警告信息的大致含义为“Visual Studio(一款编程开发工具)有了新的版本,请点击以更新。”。一听就十分的无关紧要,而事实也确实如此。
项目(Project)
项目窗口(Project)是您在 Unity 中导航和查找资源及其他项目文件的主要方式。您可以使用这个窗口浏览/导入/设置/删除项目的所有资产和资源,也可以快捷地从外部导入各种资源,并在项目窗口中对资源进行再分类。
收藏(Favorites)
展开收藏文件夹,可以看到三个搜索文件夹,它实质上为容纳特定搜索词的一个容器,当打开这个文件夹后,自动往搜索框中填入对应文本进行类型搜索,您可以在打开文件夹后看到这一点:
您也可以在搜索时,通过点击模块右上角的五角星符号来主动地往 Favorites 添加搜索文件夹。
或拖动任一文件夹将它放入收藏中:
搜索(Search)
您可以在 搜索框 中输入文件名以在项目内搜索对应文件。
指定搜索类型
层级窗口(Hierarchy)
层级窗口(Hierarchy)是一个显示场景中所有游戏对象(如模型、摄像机或预制件)的窗口,展示对象之间的父子级关系,类似于一个列表清单。
您可以使用层级窗口对场景中使用的游戏对象进行排序和分组,在场景视图中添加或移除游戏对象时,对应的层级窗口也会同样添加或移除相同游戏对象。
检查器窗口(Inspector)
检查器窗口(Inspector)可以查看和编辑 Unity 中几乎所有内容(包括游戏对象、Unity 组件、资源、材质)的属性和设置。