Unity3D学习笔记(1)——认识HelloWorld

欢迎来到3D世界!

本文仅供个人记录和复习,不用于其他用途

关于弃用Cocos2dx

Cocos2dx 对于初学者来说是一款很不错的游戏引擎,简单明了的层级结构能够帮助新手快速了解游戏的整个开发过程。另外,我选用 Cocos2dx 的原因之一就是它采用了 C++ 来编写逻辑,不需要我再额外去学习心得语言(其实就是懒)。

虽然 Cocos2dx 有诸多的便利,比如上手快、多平台移植,但并不能够掩盖它作为游戏引擎的不成熟。像我之前在做一个小型 demo 时,就发现 Cocos2dx 的组件实在是太少了,很多必要的组件都需要自己去实现。上网百度了一下后,我才知道 Cocos2dx、Cocos2dx-lua、CocosStudio以及最新出的可视化图形引擎 CocosCreator 都是不同的小组开发的(更牛的是这四个小组都是处在不同的城市XD)。

看到这里,你大概也能够明白为什么 Cocos2dx 的功能如此不齐全了。总是在画大饼,做到一半又跑去做新的,这样的游戏引擎实在是没有什么前途。至于最新的那个 CocosCreator,虽说是按照 U3D 来设计的图形编辑器,但是脚本却是改用 JAVA 开发……总之我是不会用了。

写在开始前

U3D 的学习笔记我不会写的很详细,编辑器的基本操作就不细说了,我只会记录一些比较重要的知识。C# 并不需要全部学,了解基本的逻辑就可以开始学习 U3D 了,之后若有需要再自行补充。

游戏开发流程

  • 开发之前,要先对市场进行调研
  • 对于原创游戏,为了规避风险,在投入力量开发之前,可以考虑先进入 Prototype(原型) 开发阶段
  • 这是一个快速尝试各种想法的阶段,通过较少的投入,开发较少的内容,体现游戏的核心乐趣
  • 之后对初始的游戏 Demo 做评估,以确定游戏的乐趣是否达到了预期
  • 如果不好玩,那就要考虑继续修改或停止项目

游戏开发分工

  • 游戏开发团队主要包括:游戏策划、程序员、美术制作、项目管理人员
  • 在游戏开发中美术的工作非常重要
  • 美术团队的人数非常多,职位也比较多,包括:原画设计、UI 界面设计、3D 角色模型师、3D 场景模型师、3D 动画师等
  • unity 几乎支持所有高端的 3D 动画软件,如 3ds Max、Maya、LightWave
  • 可以根据需要选择 3D 动画软件,将制作的模型和动画导出为 FBX 格式供 Unity 使用
  • QA 测试:品质保证 Quality Assurance
  • 为了保证游戏质量,需要安排 QA 人员对游戏进行全面的测试
  • QA 的主要工作是找出游戏中的 BUG,这些 BUG 可能是程序造成的,也可能是关卡编辑错误造成的,还可能是美术资源的问题造成的
  • 最好能够对 BUG 进行分级管理,比如 A、B、C,并跟踪修改记录,优先去修改较为严重的BUG
  • 修改 BUG 本身有时会造成出现新的 BUG,所以在完成一个版本的修改后,仍需要对整个游戏进行较全面的测试

第一个demo

界面介绍

我用的版本是 2017.4.1f1,先创建一个 3D 项目,得到如下界面:

  • Hierarchy:显示游戏场景中的所有物体
  • Project:管理游戏资源 Assets
  • Scene:当前场景的预览视图
  • Game:以摄像机为视角的游戏视图,即玩家视角
  • Inspector:显示游戏对象的属性

基本操作

  • 左键:选择,拖动画布
  • 右键:调整视角,变换坐标系
  • 滚轮:拉近、拉远视角

元素

  • GameObject:游戏对象
  • Component:组件
  • Material:材质
  • Texture:纹理

关于纹理和材质的区别,你可以简单的认为纹理是衣服的布料,而材质是衣服的形状。

那么下面,我们就来做一个小demo。

创建自由移动的方块

首先,我们在 Hierarchy 中点击 Create -> 3D Object -> Cube,创建出一个立方体。然后在 Project 中点击 Create -> C# Script,创建一个 C# 脚本。

这里的 C# 脚本是采用 U3D 自带的 MonoDevelop 编辑器,如果你想用 Visual Studio 可以在 Edit -> Preferences -> External Tools 中修改。

在写代码前,首先给脚本改个名字,叫做 CubeMove。注意,脚本名称要与类名一致。

双击脚本打开编辑器,键入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeMove : MonoBehaviour {
private float speed;
// Use this for initialization
void Start () {
speed = 0.01f;
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.W)) {
transform.Translate (Vector3.up * speed);
} else if (Input.GetKey (KeyCode.S)) {
transform.Translate (Vector2.down * speed);
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (Vector3.left * speed);
} else if (Input.GetKey (KeyCode.D)) {
transform.Translate (Vector3.right * speed);
}
}
}

保存之后就可以返回 U3D 了,如果有报错,记得根据信息修改。

脚本写完了,我们还得将脚本和方块连接到一起,这里有两个方法:

  • 直接将脚本拖拽到 Cube 对象上
  • 点击 Cube 对象,在 Inspector 中点击 Add Component -> Scripts -> CubeMove

这里还是推荐用第一种方式,方便快捷。

发布至PC平台

代码写完了,接下来就要生成可执行文件了。点击 File -> Build Setting,便会出现如下界面:

可以看到,现阶段的 U3D 提供了许多种游戏平台的发布,不过都需要在对应的平台进行调试。这里我们只发布到 PC 平台测试一下。

看到红线标记处,我们要将 scene1 这个场景加入进来,如有需要也可以在 Player Settings 中设置游戏的相关参数。点击 Build,将生成 .exe 文件。

运行游戏,按 W S A D 即可让方块上下移动。