3D游戏编程 作业二 简答题部分

实验题传送门:  实验题

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

        游戏对象:指的是一个能够容纳实现实际功能的组件。游戏中的每个对象都是一个游戏对象 (GameObject)。然而,游戏对象 (GameObjects) 本身不做任何事情。它们需要特殊属性 (special properties) 才能成为一个角色、一种环境或者一种特殊效果。

        资源:指的是在游戏中可能用到的各种东西,比如模型、声音文件、贴图文件等等

        联系:资源可以作为模板,实例化成具体的游戏对象,也可以作为游戏对象中的某种属性,同时也可以被多个游戏对象同时使用。

2.下载几个游戏案例,总结资源、对象组织的结构

        

 该游戏资源的内容分为预制、脚本等等,按照文件的类型的不同,添加到不同的文件夹当中,便于后面的资源整理和利用

 该游戏将游戏对象分为游戏的控制,环境的设置,玩家以及目标,符合游戏的各个必要的环节

3.编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
常用事件包括 OnGUI() OnDisable() OnEnable()

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Start");
    }

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

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

    void LateUpdate(){
        // Debug.Log("Late");
    }

    void OnGUI(){
        //Debug.Log("GUI");
    }

    void OnDisable(){
        Debug.Log("Dis");
    }

    void OnEnable(){
        Debug.Log("Enable");
    }

    // Update is called once per frame
    void Update()
    {
        // Debug.Log("Update");
    }
}

 awake:当一个脚本实例被载入时被调用

start:在所有update函数之前被调用一次

update:当行为启用时,其update在每一帧被调用

fixedupdate:当行为启用时,其fixedupdate在每一时间片被调用,受到Time.timeScale的影响,固定时间调用

lateupdate:所有update调用一轮完后调用

OnGUI:渲染和处理GUI事件时调用

OnEnable:当对象变为可用或激活状态时被调用

OnDisable:当对象变为不可用或非激活状态时被调用,例如运行时直接删除该对象

4.查找脚本手册,了解 GameObject,Transform,Component 对象
分别翻译官方对三个对象的描述(Description)
描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
用 UML 图描述 三者的关系

1)翻译:

  • GameObject:是Unity场景里面所有实体的基类.
  • Transform:物体的位置、旋转和缩放。
  • Component:一切附加到游戏物体的基类。

2)描述(图形由自行截图获得)

  • 第一个选择框是activeSelf:可以定义对象的名称,动静态等属性
  • 第二个选择框是Transform:可以定义对象的位置、面向方向、大小
  • 第三个选择框是Mesh Fiter:可以定义对象的形状
  • 第四个选择框是Box Collider:可以调整碰撞体的位置、大小、形状
  • 第五个组件是Material:可以定义物体的材质
  • 第六个选择框是Component:可以给对象增加行为、属性

3)UML图(由于属性过多,类图中只放部分属性)

5.资源预设与克隆 

1)预设的好处:

        预设可以提前将设计游戏中所需要的游戏对象进行设计打包,成为一个模板。在设计的过程中,随时可以直接从资源当中加载,成为一个游戏对象。例如:实验题中的棋子,如果临时设计就需要大量代码进行临时创建,而预设可以让程序直接提取对应资源。

2)预设与克隆关系

        克隆是对已经存在的游戏对象,或者是资源当中的预设进行复制。克隆可以是对已经添加在视图当中的游戏对象进行复制,也可以是对资源当中,我们提前预设好的模板进行克隆。因此,预设一般来说是克隆的一个基础步骤,在预设之后,就可以在资源当中随心所欲地为自己想要的对象进行克隆了。

3)制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象

        由于实验题中我已经实现预设实例化,在此直接挪用棋子实现的代码

ChessTable[i,j] = Instantiate(Resources.Load((i+j)%2==1?m1:m2), new Vector3(i, 0, j), Quaternion.identity) as GameObject;
ChessTable[i,j].transform.parent = this.transform;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值