目录:
- 简要介绍一下Unity开发工具
- 如何使用Unity
- 新建一个项目,并在控制台输出Hello Unity
- unity的文件系统
项目源码:ch01_HelloUnity
Unity版本:2018.3.3f1
系统版本:macOS 10.13.1
正文:
1、Unity开发工具的特点
优势:
- 提供了极度高效的可视化工作流
- 多维度的跨平台支持(几乎一键可以发布到现在任何主流平台)
- Unity使用模块化组件系统构造游戏对象(与继承不同)
缺点: - 混合使用可视化编辑器和复杂的代码,产生了大的复杂度。
- Unity不支持链接额外的代码库。
- 必须使用预设(prefab)。
2、如何使用Unity
在打开Unity3D后的第一章的工程后,我们可以看到这个界面

Unity中的界面被划分为不同的部分:Scene、Game、工具栏、Hierarchy、Inspector、Project和Console。每部分都有不同的用途,它们在构建游戏生命周期中都很重要。这里是官方的视频介绍,强烈推荐看一下:
https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unitybian-ji-qi-jie-mian-jie-shao
3、新建一个项目,并在控制台输出Hello Unity
Unity中所有的代码的执行都从链接到对象的代码文件开始。游戏对象是有组件集合构建而成,而这些集合能包含要执行的脚本。
这个项目的具体的步骤只需要3步
1、创建一个HelloUnity的C#脚本:从Assets菜单的create菜单中选择C# script。双击HelloUnity脚本打开。
并输入以下代码
//System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
using System.Collections;
//System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
using System.Collections.Generic;
//导入unity引擎程序的命名空间
using UnityEngine;
public class HelloUnity : MonoBehaviour //继承unity脚本的基类
{
// Start is called before the first frame update
void Start() //游戏开始的时候执行
{
Debug.Log("Hello Unity");
}
// Update is called once per frame
void Update() //游戏每帧运行的代码
{
}
}
2、选择GameObject|Create Empty,在Hierarchy列表中将出现一个空的GameObject。
3、从Project视图将脚本拖到Hierarchy视图并放置在那个空的GameObject上。下图是将脚本组件添加给物体后的物体Inspector视图。

最后你单击play按钮后,你可以看到控制台,打印出了Hello Unity的文本。恭喜你,你已经完成了自己第一个Unity项目了。
这里要提一下,在Unity 2018.1中,仅将Visual Studio for Mac作为MacOS上的唯一C# IDE。也就是说现在我们不能使用MonoDevelop,这个跨平台的IDE了。
以下是官方公告:
现在与Unity一同发行的MonoDevelop-Unity 5.9.6并不支持最新的C#特性,并且也不支持在Unity的.NET 4.6脚本运行时中调试C#脚本。为此我们将做出二项改变。
- 在MacOS和Windows上,移除Unity 2018.1中的MonoDevelop-Unity 5.9.6安装程序,并从Unity 2018.1开始,不在支持使用它进行Unity开发。
- 在Unity 2018.1中,仅将Visual Studio for Mac作为MacOS上的唯一C# IDE。在Windows上,我们将继续保留Visual Studio 2017 Community,并不再将MonoDevelop-Unity作为可选项。
公告链接:http://forum.china.unity3d.com/forum.php?mod=viewthread&tid=30156&extra=page%3D3%26filter%3Dtypeid%26typeid%3D4
如果你熟练的使用VS调试的话,可以看看官方文档:
这里是使用VS调试项目的官方教程:
Visual Studio Tools for Unity ,在 Unity 编辑器中调试:
https://docs.microsoft.com/zh-cn/visualstudio/cross-platform/using-visual-studio-tools-for-unity?view=vs-2017
4、从新建工程中查看unity文件系统

新建工程后,在项目文件夹下面一共有六个文件夹(如果关掉Unity的话Temp文件夹就消失了)。下面介绍一下这六个文件夹:
Assets:资源;主要是所有的 C# 文件和任何其他游戏的objects,例如 3D 模型、 2D 纹理和声音的会在在此目录中的某个地方。如果文件不位于此目录中,你的游戏不能访问它。往往当一个项目更大,它的一个好的想法是在这里有条理的创建一些子目录。这些不同的文件组织是取决于你,但大多数情况下,不同的类型在不同的目录下。所有游戏资源全都放在这个目录下,包括脚本、纹理、声音、自定义编辑器等。这是工程中最重要的文件夹。
Library:库文件;重要Assets的本地缓存,不用放在版本控制中。此属性包含unity3D 使用配合资产(tie assets)和逻辑一起在scenes的引用关系。这里还放置您设置的editor preferences、 platform settings和游戏引擎需要的许多其他设定。用户需要去这里做出任何修改是非常罕见的,所以最好是避免摆弄此目录的内容。
ProjectSettings:项目设置;存放工程设置。包括物理、标签、玩家设置等。换句话说,你在菜单Edit → Project Settings中做过的所有设置都放在这个目录下。
Temp:临时文件夹;unity运行过程中生成的临时文件。obj是VS用的,Temp是unity用的。 数据缓存(Data caches),写入临时文件和其他操作系统维护相关的东西就扔到 Temp 目录。Unity3D 是一个复杂的系统,由许多不同的组件组成。一切都很好,一起流动还有大量的临时工作。
Logs:存放logs文件;
Resource文件夹,用于在运行时加载资源。使用Resource.Load(“path”)的方式加载,简单方便。
但是尽量不要使用它,
1:它使内存管理变得困难;
2:不恰当的使用Resource文件夹,会增加程序启动时间和打包时间;
3:降低了工程中的内容转换到特定平台的能力,使内容更新困难
Library,ProjectSettings 和 Temp 的目录之间,我们有许多Unity3D 生成关于其自身的附加物。这不是像很多其他的编程环境。缓存文件、 调试文件和中间资源往往会堆积在即使是最简单的编程项目。我们只需要关注的是资产Assets目录。
在编写完,并运行项目过后文件夹增加了,下面我们介绍一下增加的文件夹中的内容:

.meta文件:当你在场景中引用一个资源(asset)时,unity不使用名字或路径,而用一个全局唯一的GUID来指向工程中的资源。这个GUID就放在meta文件中,unity会为Assets目录下的所有文件夹和资源文件生成一个meta文件。
GUID有优点也有缺点
优点:移动、重命名、改动资源文件,都对GUID没有影响,GUID还是指向这个资源文件。
缺点:注意不要随意删除资源文件相关的meta文件。如果删除了meta文件,unity会认为原始的资源文件被删除了,并给此资源重新生成一个新的GUID。这就是为什么有时候场景中资源的引用会突然断开。
除了GUID,.meta文件还有重新导入资源的信息。比如纹理资源可设为以标准纹理、普通地图、GUI纹理、cookie、纹理、光照贴图导入。这些导入设置是放在meta文件中的。
obj:Unity运行过程中生成的临时文件。obj是VS用的。
.sln: 解决方案文件(solusion)
.csproj: c sharp project C#工程项目文件
小结
- Unity是一个多平台的开发工具
- Unity的可视化编辑器包括可以协同工作的几部分。
- 脚本是作为组件附加到对象上的。
- 代码是使用Visual Studio for Mac编写的内部脚本。
4546



被折叠的 条评论
为什么被折叠?



