简答题
1.
解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。
GameObject 是运行时在场景中被渲染的实体对象。而 Asset 是可复用的 GameObject 或 GameObject 的集合。
也就是说,Asset 是一些将大量被复用的 GameObject 的组合方式,
也就是说,如果将 Asset 视为类,那么 GameObject 相当于类的对象。如果我们修改 Asset,那么相应的 GameObject 都会被修改。Asset 会有一些预设值,而 GameObject 可以覆盖修改 Asset 的预设值。
此外,Asset 可以被保存到磁盘中,而 GameObject 一般不直接保存到磁盘中,而是根据 Asset 和属性值来创建。
也就是说,GameObject 是 Asset 的实例。是多对一的关系。
从 Unity3D 的操作方式角度看,GameObject 和 Asset 可以互相生成,从 Asset 将 Prefab 拖到场景中将生成一个 GameObject;将场景中已经存在的 GameObject 拖到创建的空 Asset 中将生成相应的 Asset。
2.
下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
3.
编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
- 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
- 常用事件包括 OnGUI() OnDisable() OnEnable()
4.
查找脚本手册,了解 GameObject,Transform,Component 对象
- 分别翻译官方对三个对象的描述(Description)
- 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
- 本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
- 例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
- 用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)
5.
整理相关学习资料,编写简单代码验证以下技术的实现:
- 查找对象
- 添加子对象
- 遍历对象树
- 清除所有子对象
7.
资源预设(Prefabs)与 对象克隆 (clone)
- 预设(Prefabs)有什么好处?
- 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
- 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
编程实践,小游戏
游戏内容: 井字棋 或 贷款计算器 或 简单计算器 等等
技术限制: 仅允许使用 IMGUI 构建 UI
作业目的:提升 debug 能力提升阅读 API 文档能力
思考题
1
微软 XNA 引擎的 Game 对象屏蔽了游戏循环的细节,并使用一组虚方法让继承者完成它们,我们称这种设计为“模板方法模式”。
- 为什么是“模板方法”模式而不是“策略模式”呢?
2
将游戏对象组成树型结构,每个节点都是游戏对象(或数)。
- 尝试解释组合模式(Composite Pattern / 一种设计模式)。
- 使用 BroadcastMessage() 方法,向子对象发送消息。你能写出 BroadcastMessage() 的伪代码吗?
3
一个游戏对象用许多部件描述不同方面的特征。我们设计坦克(Tank)游戏对象不是继承于GameObject对象,而是 GameObject 添加一组行为部件(Component)。
- 这是什么设计模式?
- 为什么不用继承设计特殊的游戏对象?