3D 游戏编程与设计 - 离散仿真引擎基础作业

简答题

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)。

  • 这是什么设计模式?
  • 为什么不用继承设计特殊的游戏对象?
上一篇:Tiny64140之初始化时钟


下一篇:C#---? ?? ?. ?: 好几种问号符号的使用方法