简答题
1.游戏对象指游戏内的所有独立物件的集合,如人物、建筑、地形等。资源指游戏中除游戏对象以外的文件,如背景音乐、剧情文本、CG等。资源是为游戏对象服务的,为了能更好地营造游戏的气氛,以玩家能身临其境地投入游戏中为目的来设计的。
2.下载了2个游戏案例(在https://unity3d.com/cn/learn/tutorials中),3D游戏Tower Defense和2D游戏2D Rougelike。下面是这两个游戏的资源、对象组织结构的分析:
首先是Tower Defense Template

Assets下的分类分别为动画、音频、数据、文件、字体、小图标/3D贴图(然而里面没放什么内容,因为都放在后面的用户界面/模型的文件夹下了)、材料、模型、特效(爆炸特效、发光特效等小型特效)、后处理、预制、场景、脚本、用户界面。

再看看游戏对象树,在WorldObjects之下,有着基础火箭塔、机枪塔、超级塔、激光塔、能量收集塔等游戏对象,每一个对象下面还有许多的细分对象,以实现防御塔地部分移动性。据此可以推测,像地图、敌方部队等对象应是采取贴图的方式来实现的,因此不存在于游戏对象树内。

另外一个游戏案例为2D Rougelike

Asset下的分类为游戏封面、音频、字体、场景、脚本和教程信息(这个游戏是面向制作游戏的新手的)。

再看看Main menu,发现其下的所有子类都没有有关游戏对象的项目,因为这只是一款2D游戏,游戏对象完全可以通过贴图+脚本的模式来实现基本移动,因此便没有必要在Unity内建立对象来操作了。

3.代码如下所示:

把这一段代码粘贴到镜头上,点击运行后停止,得到的log信息如下:


根据这两张图容易得出:
Awake():在游戏开始时执行,只执行一次
Start():在游戏开始时执行,只执行一次,在Awake()后执行
Update():每一帧执行一次
FixedUpdate():每Fixed Time执行一次
LateUpdate():每一帧执行一次,在Update()后执行
OnGUI():每半帧执行一次(这个是上网查的,不知为何在这里没有出现)
OnEnable():在激活脚本时执行。
OnDisable():与OnEnable相对,在未激活脚本的时候执行
4.GameObject(游戏对象):统一场景中所有实体的基类。
Transform(变换):物体的位置、旋转和比例。
Component(部件):所有附加到游戏对象的东西的基类。
Table游戏对象的 Inspector 面板如下:

从上往下第一个框为Table的activeSelf属性,可以修改对象的名字、标记和所在层等
第二个框为Transform属性,可以修改对象的位置、角度和比例
第三个框说明了该物体被分为了cube网格类
第四个框为Mesh Renderer属性,可以修改对象的材质、光线等属性
第五个框为Box Collider属性,可以修改对象的碰撞箱
以上的属性都可视为Table这个对象的部件。
三者的uml图关系如下:

5.预设和对象克隆都可以快速生成有规律的大规模场景。
不同点在于预设的基础对象发生变化,则所有通过预设实例化的对象都会随之变化,便于批量处理;但对象克隆得到的实例不会与本体有所关联,便于局部修改。
本文解析了3D游戏编程与设计的作业内容,包括游戏对象与资源的概念,Unity游戏案例分析,Unity脚本生命周期,GameObject、Transform和Component的关系,以及预设和对象克隆的区别。
3733

被折叠的 条评论
为什么被折叠?



