离散仿真引擎基础作业
- 简答题
- 编程实践,小游戏
- 思考题
简答题
解释游戏对象(GameObjects)和资源(Assets)的区别与联系
游戏对象是在游戏中真实存在一个物体,是可以进行选中操作的对象,而资源则是对游戏对象的一个修饰,比如一个正方体是游戏对象,但是其表面的图案等具体信息是资源来设定的。
下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
案例一:卡丁车
案例二
从图中我们不难看出,这款资源包的资源结构,它包含了图片、脚本等很多资源,并分门别类地放入各个文件夹
游戏对象树的层次结构:
游戏中的对象并不都是并列存在的,他们有从属的关系,就像一棵树一样
编写一个代码,使用debug语句来验证MonoBehaviour基本行为或事件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour {
void Awake()
{
Debug.Log("awake");
}
void Start () {
Debug.Log("start");
}
void Update () {
Debug.Log("update");
}
void FixedUpdate()
{
Debug.Log("fixedupdate");
}
void LateUpdate()
{
Debug.Log("lateupdate");
}
void OnGUI()
{
Debug.Log("ongui");
}
void OnDisable()
{
Debug.Log("ondisable");
}
void OnEnable()
{
Debug.Log("onenable");
}
}
基本行为包括Awake()Start()Update()FixedUpdate()LateUpdate()
常用事件包括OnGUI()OnEnable()
分析:
上图是各个函数被调用的顺序,我们不难看出:
1、Awake最先被调用,且只调用一次;
2、OnEnable紧接着被调用,也只调用一次;
3、Start紧接着被调用,也只调用一次;
4、在运行过程中,FixedUpdate,Update,LateUpdate,OnGUI相继被调用
查找脚本手册,了解GameObject,Transform,Component对象
分别翻译官方对三个对象的描述(Description)
GameObject: 游戏中的每个对象都是一个游戏对象(GameObject)。然而,游戏对象(GameObjects)本身不做任何事情。它们需要特殊属性(special properties)才能成为一个角色、一种环境或者一种特殊效果。
Transform:变换(Transforms)是每个游戏对象(GameObject)的关键组件(Component)。它们决定游戏对象 (GameObject)的位置、旋转方式及缩放。
Reset:在游戏中,组件(Components)就是对象和行为的螺栓与螺母,它们是每个游戏对象 (GameObject)的功能零件。
描述下图中table对象(实体)的属性、table的Transform的属性、table的部件
table 的对象是GameObject,第一个选择框是 activeSelf属性,第二个选择框是Transform属性,第三个选择框是Mesh Filter筛网过滤器属性,第四个选择框是Box Collider属性,第五个选择框是Mesh Renderer筛网渲染器属性,第六个选择框是Default-Material属性。
用UML图描述三者的关系
资源预设(Prefabs)与对象克隆(clone)
预设(Prefabs)有什么好处?
预设是一个非常容易复用的类模板,可以迅速方便创建大量相同属性的对象、操作简单,代码量少,减少出错概率。
预设与对象克隆(clone or copy or Instrantiate of Unity Object)关系?
一旦预设中的属性改变了,由预设产生的实例也会相应的改变;而通过对象克隆出来的对象,不会因为本体的改变而改变。
制作table预制,写一段代码将table预制资源实例化成游戏对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class create : MonoBehaviour {
public GameObject prefab;
// Use this for initialization
void Start () {
Instantiate(prefab, new Vector3(0f, 0f, 0f), Quaternion.identity);
}
}
编程实践,小游戏
游戏内容:井字棋
技术限制:仅允许使用IMGUI构建UI
作业目的:
了解OnGUI()事件,提升debug能力
提升阅读API文档能力
项目链接:https://github.com/zxy0616/3DGame-unity.git