ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-09-13 21:05:59  阅读:261  来源: 互联网

标签:仿真 游戏 对象 GameObject 编程 API Asset table 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)。

  • 这是什么设计模式?
  • 为什么不用继承设计特殊的游戏对象?

标签:仿真,游戏,对象,GameObject,编程,API,Asset,table,3D
来源: https://blog.csdn.net/huanghongxun/article/details/100566472

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有