【Unity】2.3 项目浏览器和资源的组织

分类:Unity、C#、VS2015 浏览器

建立日期:2016-03-29 工具

1、Project—工程浏览器

前面咱们说过,Unity中的Project View(称为工程浏览器)至关于VS2015中的解决方案资源管理器(Solution),Unity的每一个工程中可包含多个关卡(*.unity),每一个关卡都是一个可独立运行的项目,根据发布的目标平台不一样,编译后生成的可执行程序的扩展名也不一样,例如对于Windows平台生成的可执行程序是(.exe文件),对于在Windows平台下运行的浏览器(Web)生成的是动态连接库(.dll文件),对于Android平台生成的是(.apk文件)。而VS2015是一个解决方案资源管理器(Solution)下可包含多个项目(Project),在Windows平台上,每一个项目根据建立的模板不一样,编译后生成的文件也不一样,或者说,生成的多是一个可独立执行的程序(.exe文件),也可能生成的是一个可被其余程序调用的动态连接库(.dll文件)。 学习

总之,虽然英文都叫Project,但含义不一样。为了容易区分,在中文翻译中通常将Unity的Project称为工程,将VS2015中Solution下的Project称为项目。 优化

Unity中Project下的各类资源和脚本都是经过文件夹来分类的,因此叫工程浏览器。这些文件夹下的资源和源程序至关于VS2015解决方案资源管理器(Solution)中每一个项目(英文也是Project)下的各类资源和源程序,区别是VS2015是先经过项目类别来区分,而后再经过项目下的文件夹和命名空间来分类,而不是仅经过文件夹来分类。 动画

可这样来理解Unity和VS2015二者之间的概念: 翻译

Unity VS2015 3d

名称 Poject(工程) 解决方案资源管理器(.sln) orm

项目 Poject下的文件夹 解决方案资源管理器中项目下的文件夹 对象

用途 管理各类资源和脚本 管理各类资源和源程序 blog

文件管理 关卡文件(*.unity) 项目文件(.csproj)

资源 Assets Resources

逻辑控制 脚本(.cs文件) 源程序(.cs文件)

理解这些含义的最好办法就是打开安装Unity时自带的示例工程,而后观察对应视图以及视图下的文件夹和文件。

下图是打开安装Unity时自带的示例工程后的Project视图:

image

Project视图以ListView的形式显示工程的结构。点击列表中的文件夹后,内容就当即显示在右侧视图中。其中单个资源显示为图标,并标明其类型(脚本、材质、子文件夹等)。移动视图下方的滑块可调整图标大小。若是滑块移至最左侧,会被ListView的另外一种视图形式替代。

表示工程结构的ListView的上方是收藏夹 (Favorites) 部分,用于保存常用的项,以方便之后访问。

可将工程结构列表中的项直接拖动至收藏夹 (Favorites)来收藏它。

Project下方的下拉框用于建立各类资源,其功能与主菜单Assets下的Create子菜单的功能相同,用于给现有文件夹添加新资源和子文件夹。

窗口 (Window) 菜单中有一个选项,可供转换至工程视图单列版,单列视图基本上只有层级结构列表,无图标视图。菜单旁的锁定图标可“冻结 (freeze)” 视图中的当前内容(如防止被其余地方的事件更改),其用法与检视器 (Inspector) 锁定的用法相似。

一、经常使用的快捷方式

当工程浏览器视图有焦点时,快捷方式可用。下面是经常使用的快捷方式:

Ctrl+A 选择列表中的全部可见项目

Delete 弹出对话框后删除

Shift+Delete 不弹出对话框而直接删除

Enter 打开所选资源

二、场景 (Scenes)

通常在Assets文件夹下的Scenes子文件夹下包含不一样的场景文件(*.unity),这些文件包含了各类游戏对象,可利用它建立主菜单、独立关卡等等。

image

Unity将每一个惟一的场景 (Scene) 文件都视做一个关卡。在每一个场景 (Scene) 中,可放入环境、障碍和装饰物等。

建立场景:File-->New Scene

保存场景:File-->Save Scene

三、实例化预设 (Prefabs)

通常用Prefabs文件夹保存各类预设文件。

image

建立一个预设 (Prefab) 后,便可轻松、快速建立该预设 (Prefab) 的副本,每一个副本都称为一个实例 (Instance)。

要建立预设的副本,可从工程视图 (Project) 中将预设文件夹下的预设直接拖放到层次视图 (Hierarchy) 或场景视图 (Scene) 中。

有了预设 (Prefab) 的实例之后,就可随意放置和调整它。

四、添加组件 (Component) 和脚本 (Scripts)

一旦有了一个预设 (Prefab) 或高亮的游戏对象 (GameObject) ,就可使用组件 (Components) 为其添加其余功能。

要添加一个组件,只须要从游戏对象 (GameObject) 中的组件 (Component) 菜单中选择一个组件 (Component)。以后,就会看到组件 (Component) 出如今游戏对象的检视器 (Inspector) 中。

image

脚本 (Scripts) 也是一种组件。

若是添加的组件切断了游戏对象 (GameObject) 与预设 (Prefab) 的联系,可以使用菜单中的游戏对象 (GameObject)->将变动应用至预设 (Apply Changes to Prefab) 从新创建链接。

五、放置游戏对象 (GameObject)

当将一个游戏对象 (GameObject) 放入场景后,就可使用快捷工具栏的【转换工具】 (Transform Tools) 将其放在任意位置。

此外,可利用检视器 (Inspector) 中转换 (Transform)选项卡下的值来微调游戏对象的位置和旋转角度。

六、使用相机 (Cameras)

相机 (Cameras) 是游戏的眼睛。玩家玩游戏时看到的全部内容都是经过一台或多台相机(Camera对象)来展现的。

image

可像任何其余游戏对象 (GameObject) 同样放置、旋转和父子化相机。因为相机是一个带相机组件 (Camera Component) 的游戏对象(GameObject)。所以,它除了具备常规游戏对象 (GameObject) 的功能之外,还有一些相机特定的功能。

脚本 (Scripts) 资源包中安装了一些有用的相机 (Camera) 脚本。建立新工程时可同时安装脚本 (Scripts) 资源包,或经过选择菜单的Assets-> Import Package来实现。

image

导入的脚本可在菜单中的Components-> Camera-Control 中找到。

image

七、光源 (Lights)

除了一些极少数状况,通常都须要在场景中添加光源 (Lights)。

双击Scenes下的Car,可观察已经添加的光源:

image

光源类型共有三种,每种各有不一样。最重要的是它们为游戏增添气氛和感受。不一样光源可彻底改变游戏的情境,有效使用光源将是一个重要的学习课题。

本章后面还会用专门的一节来介绍它。

2、Assets—保存和组织各类资源

Project下的Assets文件夹用于保存和组织Unity工程中的各类资源。

image

一、资源工做流程

这里介绍的在Unity中使用单个资源的步骤都是通用的步骤,只是概述了基本操做。例如,三维 (3D) 网格的使用。

二、建立粗糙资源

你可使用任何支持的三维 (3D) 的建模软件建立一个粗糙的资源。例如采用3Dmax、Maya等。后面的章节中还会单独介绍可导入哪些建模模型。

三、建立和更新资源

若是您正在建立游戏并须要添加任意类型的新资源,您只需建立此资源并将其保存在资源 (Assets) 文件夹下。当您返回或启动 Unity 时,添加的文件就会被自动检测到并自动导入到Unity工程中。

image

另外,当你在本机上经过3Dmax、Maya等软件中更新和保存资源时,Unity还能够自动检测到所作的更改并从新导入更改后的资源。这可让你集中精力优化资源,而没必要担忧资源与Unity之间的不一致问题。

(1)默认值

在某些导入程序上,您能够为字段引用或类似事务指定默认值。要指定默认值,请在须要设置默认值的字段上打开对象选择器 (object selector),而后在对象选择器上选择一个值。

(2)资源类型

这里有一些基本的资源类型可供你建立游戏。包括:

(a)网格文件 (Mesh Files) 和动画 (Animations)

不管使用哪一种三维资源包,Unity都会从每一个文件中导入网格和动画。

仅为了使用网格(Mesh)文件时不须要导入动画。若是使用动画,能够选择从单个文件导入全部动画或逐个导入包含每一个动画的文件。

将网格(Mesh)导入到Unity后,就能够将其拖至场景(Scene)或层级视图(Hierarchy)来建立网格的实例。也能够将组件(Components)添加至实例,而不会做为附件添加至网格文件自己。

Unity将使用UV(即:二维纹理贴图)和大量默认材质 (Materials)(每一个UV对应一种材质)来导入网格(Mesh)。这样你就能够将对应的纹理文件分配到材质,而后在Unity游戏引擎上填充网格的外观。

(b)纹理文件(Texture Files)

Unity支持全部图像格式。即便是分层的Photoshop文件也同样能够导入,并且不会损坏Photoshop的原始格式。这可以让你轻松无忧地处理单个纹理文件,获取精简流畅的体验。

注意:使用的纹理尺寸应该是2的升幂(如32x3二、64x6四、128x12八、256x256 等),不然可能会致使加载、处理都变慢以及可能会出现马赛克等负面效果。

要导入纹理,只需将纹理放入工程的资源(Assets)文件夹下,此时纹理就会自动显示在工程视图(Project View)中。

另外,你须要将纹理分配到材质中,而后才可将材质运用到网格(Mesh)、粒子系统 (Particle System) 或 GUI 纹理 (GUI Texture)。

使用导入设置 (Import Settings) 也可将纹理转换为游戏中不一样应用类型的立方体贴图 (Cubemap) 或法线贴图 (Normalmap)。

四、导入资源

初次保存资源时,应将其按常规保存在Project下的资源(Assets)文件夹下。这样作的好处是打开Unity工程后,Unity就会检测到该资源并自动将其导入到工程中。

注意,Unity使用所用建模软件(如3Dmax、Maya等)提供的FBX导出功能将模型转成FBX文件格式,所以要求这些软件要有FBX导出包,以供Unity自动调用。

也能够在应用程序中直接导出为FBX并保存到工程(Project)文件夹下。

将文件添加至工程文件夹的资源 (Assets) 文件夹后,Unity会自动检测到这些文件。将任何资源 (Assets) 放入资源文件夹后,资源 (Assets) 也都会自动显示在工程视图 (Project View) 中。

整理工程视图 (Project View) 时,请务必记住如下很是重要的事项:

切勿在Unity的管理以外移动任何资源或整理此文件夹。必须始终使用工程视图 ( Project View) 进行上述操做!

这是由于Unity 中存储了大量资源文件之间的关系元数据。这些数据用于Unity可在何处找到这些资源。若是你在工程视图 (Project View) 内移动资源,这些关系都会保留。若是在 Unity 外移动资源,则将破坏这些关系。

另外,若是在工程视图 (Project View) 中选择资源,该资源的导入设置会自动出如今检视器 (Inspector) 中。显示的选项将根据所选资源的类型自动更改。

image

(1)在场景中添加资源

只需单击工程视图 (Project View) 中的网格(Mesh)并拖动至层级视图 (Hierarchy) 或场景视图 (Scene View),即可将其添加至场景 (Scene) 中。

将网格(Mesh)拖到场景中时,将建立一个带网格渲染器 (Mesh Renderer)组件 (Component) 的游戏对象 (GameObject)。

若是要使用纹理或声音文件,须要将其添加到场景 (Scene) 或工程 (Project) 中已经存在的游戏对象 (GameObject)中。

(2)将不一样资源放到一块儿

如下简述了最经常使用资源之间的关系。

(a)将纹理 (Texture) 应用于材质 (Material)

可将材质 (Material) 应用于游戏对象(GameObject),应用后该对象就变成了带网格渲染器的组件(Mesh Renderer Component)。

可将动画 (Animation) 应用于游戏对象 (GameObject),应用后该对象就变成了带动画的组件 (Animation Component))

可将声音文件应用于游戏对象 (GameObject),应用后该对象就变成了带声音源的组件 (Audio Source Component))

(b)建立预设

预设 (Prefabs) 是可重复用于场景中的游戏对象 (GameObject) 和组件 (Component) 的集合。

一个预设 (Prefab) 可建立多个相同对象,称之为实例化。好比树,建立一个树预设 (Prefab) 能够实例化多棵相同的树并将其放入场景中。全部树都与预设 (Prefab) 连接在一块儿,因此对预设 (Prefab) 所作的任何更改都将自动应用到全部树的实例当中。若是想更改网格、材质或任何其余项,只需一次性在预设 (Prefab) 中更改,而后全部其余树都会继承这些更改。也可更改一个实例,而后选择主菜单上的游戏对象 (GameObject)->将变动应用至预设 (Apply Changes to Prefab),这可节省许多设置和更新资源的时间。

若是游戏对象 (GameObject) 包含多个组件 (Component) 和子游戏对象 (GameObject) 层级,可在顶级游戏对象 (GameObject)(或根 (root))中建立一个预设 (Prefab),再使用整个游戏对象 (GameObject) 集合。

能够将预设 (Prefab) 当成游戏对象 (GameObject) 结构蓝图。全部预设 (Prefab) 克隆体都和蓝图相同。若是蓝图更新,那么全部克隆体也将更新。更新预设 (Prefab) 自己有多种方式,可经过更改其克隆体之一并将更改应用至蓝图实现。有关预设 (Prefab) 的使用和更新的更多内容,请浏览预设 (Prefabs) 页面。

要从场景的游戏对象 (GameObject) 中真正建立一个预设 (Prefab),只需将游戏对象 (GameObject) 从场景拖到工程中,您会看到游戏对象 (Game Object) 的名称文字变蓝,为新预设 (Prefab) 任意命名。如今,您已建立可重复使用的预设 (Prefab)。

(3)更新资源

您已经导入、实例化资源并连接至预设 (Prefab)。想要编辑源资源时,只需在工程视图 (Project View) 中双击它。相应的应用程序将会启动,可随意进行更改。更新完成后保存。以后,切换回 Unity 时将检测到该更新,资源会被从新导入。资源到预设 (Prefab) 的连接也将保留。看到的效果就是预设 (Prefab) 将更新。以上即为更新资源的全部必要信息。打开并保存便可!

(4)给资源添加标签【可选】

若是想让全部资源保存有序状态,给资源添加标签始终是个好办法。有了标签,即可在工程视图或对象选择器的搜索栏中搜索每一个资源相关的标签。

给资源 (Asset) 添加标签 (Label) 的步骤:

(从工程视图 (Project View) 中)选择想要添加标签的资源 (Asset)。

若是该资源无任何相关联的标签 (Labels),则在检视器中单击“添加标签 (Add Label)”。

若是资源有相关联的标签,则单击标签 (Labels)所在。

开始写标签 (Labels)。

注意:

(a)任何资源可带一个以上标签。

(b)要分割/建立标签,只需在写资源标签名时按enter键。

相关文章
相关标签/搜索