离散仿真引擎基础

一、简答题

1.解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。

游戏对象:出现在场景中,一般有人物、道具和风景等等,充当组件的容器,实现真正的功能。游戏对象自己不做任何事。他们需要专有属性,才可以成为一个角色,一个环境,或一个特殊效果。
资源:表示可以在项目中使用的任何素材。可能来自在Unity之外创建的文件,例如3D模型、音频文件,图像,脚本或Unity支持的任何其他类型的文件。还有一些可以在Unity中创建的资源类型,如动画控制器、音频混音器或渲染纹理。
游戏对象可以保存为资源;资源可以作为游戏对象的模板。

2.下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)

资源的目录组织结构: 主要包括动画,文本,场景,素材,模型,预设以及使用说明等。
游戏对象树的层次结构:主要包括摄像机包,游戏开始位置,场景布局以及文本管理等。

3.编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件

基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
常用事件包括 OnGUI() OnDisable() OnEnable()

void Awake(){
    Debug.Log("Awake");
}

void Start () {
    Debug.Log("Start");
}

void Update () {
    Debug.Log("Update");
}

void FixedUpdate(){
    Debug.Log("FixedUpdate");
}

void LateUpdate(){
    Debug.Log("Update");
}

void OnGUI()
{
    if (GUI.Button(new Rect(100, 100, 100, 100), "Button"))
        print("You clicked the button!");
}

void OnDisable(){
    Debug.Log("PrintOnDisable: script was disabled");
}

void OnEnable(){
    print("script was enabled");
}

运行结果:
monoBehaviour

4.查找脚本手册,了解 GameObject,Transform,Component 对象

1)分别翻译官方对三个对象的描述(Description)

GameObject:Base class for all entities in Unity Scenes.
游戏对象:Unity视图中所有实体的基类。
Transform:Position, rotation and scale of an object.
变换:一个对象的位置、循环以及大小。
Component:Base class for everything attached to GameObjects.
组件:所有附加到游戏对象上的东西的基类。

2)描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件

table
table 对象属性:第一个选择框activeSelf属性-该对象是否显示/渲染;chair为对象名称;Static属性表示该对象为静态;Tag属性用于分类;Layer属性-相机最常使用图层来渲染场景的一部分;Prefab属性-预设
Transform 的属性:Position(位置);Rotation(旋转角度);Scale(缩放比例)
table 的部件:有Transform、Cube、Box Collider、Mesh Renderer等部件

3)用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)

UML

5.资源预设(Prefabs)与 对象克隆 (clone)

1)预设(Prefabs)有什么好处?

通过预设可以在一定程度上简化创建的过程。预设的目的是为相同属性的对象创建模板,这样再次创建对象时可以变得相当简便。

2)预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?

首先,两者的目的都是为了得到属性相同的一堆游戏对象。但预设是固定了一个模板,通过模板创建的对象都是固定属性的,想要改变一个对象的某一公共属性,只有改变模板的固有属性,但同时所有的对象的该属性都会改变;而对象克隆是与被克隆对象的属性一样,但当你改变被克隆对象后,再次克隆的新对象与原来克隆的对象属性不同。

3)制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject obj;
    void Start()
    {
        GameObject instance = (GameObject)Instantiate(obj.gameObject, transform.position, transform.rotation);
    }
}

table
运行后,可以看到table的clone。

二、 编程实践,小游戏

游戏内容: 井字棋 或 贷款计算器 或 简单计算器 等等

井字棋(代码)
运行结果:
x wins:
x wins
o wins:
o wins
It’s a draw:
It's a draw

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页