分类 - Unity

2019-10-27 14:12:56    47    0    0

选择脚本开发环境

  • 在Unity游戏开发中,脚本起着至关重要的作用,游戏对象间的逻辑关系需要脚本来实现,游戏关卡的设计、各类角色的运动、场景的资源管理等都是脚本在驱动。
  • 如果是VS2017之前的版本,需要在VS中下载Visual Studio Tools for Unity,然后在Unity中配置External Script Editor为UnityVS,并在项目中导入UnityVS包,才可以直接在Unity中双击打开脚本文件。也可以使用Unity自带的代码编辑器MonoDevelop,优点是开源且跨平台。
  • 我使用的是VS2017,所以可以直接在Visual Studio Installer中选择安装Unity及Visual Studio Tools for Unity。
    title
    title
  • 向项目中添加脚本通常有三种方式:
    1. 在Project视图中,单击Create按钮创建脚本。
    2. 单击菜单项Assets-Create创建脚本。
    3. 选中Hierarchy视图中的某个GameObject,在Inspector视图中单击Add Component按钮,单击最下面的New Script创建脚本,这种方式创建的脚本会自动绑定到选中的GameObject上,而通过前面两种方式创建的脚本必须手工拖动到需要绑定的GameObject上。

Unity中常用的C#脚本语法

Unity中C#脚本基于开源的.NET平台Mono,语法上与微软公司的标准C#语言类似,但两者在一些地方存在区别:在Unity中绝大部分的脚本都需要绑定到GameObject上去控制对象的行为,而这样的类必须继承自积累MonoBehaviour。同时,Unity的C#在类命名、yield语法、资源初始化等方面都与标准C#有不同之处,所以在使用C#编写脚本时需要了解并注意这些区别。

变量、数组与函数

变量的声明和初始化:

  1. float a; //编译器会根据变量类型float为变量a赋上初始值0.0f
  2. bool visible = false;
  3. Vector3 pos = Vector3.zero;
  4. Light light = gameObject.GetComponent<Light>();
2019-10-27 14:12:56    188    0    0

(参考《Unity官方案例精讲》,使用Unity 2018.3.Of2 Personal版本)

游戏实现功能分析

  1. 键盘控制飞船移动
  2. 发射子弹射击目标
  3. 随机生成大量障碍物(小行星)
  4. 计分
  5. 实现游戏对象的生命周期管理

导入模型、贴图和材质

新建工程

  • 新建3D工程,工程名为MySpaceShooter。

导入资源包文件

  • 点击菜单栏 Window - Asset Store 打开资源商店,搜索 Space Shooter,找到 Space Shooter tutorial,点击 Download - Import 将资源包导入工程。
    title
  • _Complete-Game/Scenes文件夹下的 Done_Main.unity是已完成的场景,可以正确运行。
    title

创建新场景及设置

  • 创建文件夹 _Scene,在文件夹下创建新场景 Main。
    title
  • 点击菜单栏 File - Build Settings - Player Settings,在右侧 Settings for PC, Mac & Linux Standalone 中找到 Fullscreen Mode,改为 Windowed,并设置游戏屏幕的宽和高(像素)。
    title
  • 在 Game 窗口中,Standalone 模式下游戏窗口的尺寸为400 * 600。

创建飞船对象并添加Component和脚本

  • 在 Models 文件夹下找到 vehicle_playerShip(FBX模型文件),拖动到 Hierarchy 视图,重命名为 Player,并 Reset 其 Transform 组件。
    title
    title
    title
  • 添加 Rigidbody (刚体)组件(添加后续脚本可以为飞船添加作用力),并取消重力。
    title
    title
  • 和上一步操作相同,添加 Mesh Collider (网格碰撞体)组件,由于默认的网格模型过于复杂,在进行碰撞时要消耗大量的计算资源,降低了游戏的执行效率,所以可以建立一个简化的模型,减少不必要的碰撞计算。为此,将飞船模型同目录下的 vehicle_playerShip_collider 拖动到 Player 的 Mesh Collider 组件的 Mesh