Unity 3D作业二:离散仿真引擎基础

前言

中山大学中山大学数据科学与计算机学院3D游戏课程学习记录博客。

简答题

1.解释游戏对象(GameObjects)和资源(Assets)的区别与联系。
  • 游戏对象:出现在游戏场景中,充当游戏的组件。游戏对象不做任何事情,需要特殊属性才能成为一个角色或者一种效果。
  • 资源:指游戏中使用到的各种东西,比如模型、音乐、图片等等。

资源可以被用与游戏对象的某种特殊属性,一个资源可以被多个游戏对象共享。

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

爱给网上下载了保卫萝卜的demo:
其中资源组织结构如下:

资源组织结构
其中包括Scenes(场景)、Scripts(精灵)等资源。
对象组织结构如下:
对象组织结构
包括一个摄像头和两个自己创建的游戏对象。

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

代码如下:

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

public class NewBehaviourScript : MonoBehaviour{      
    // Start is called before the first frame update    
    void Start()    
    {        
    	Debug.Log("Start");    
    }
    // Update is called once per frame    
    void Update()    
    {        
    	Debug.Log("Update");    
    }
    private void Awake()    
    {        
    	Debug.Log("Awake");    
    }
    private void FixedUpdate()    
    {        
    	Debug.Log("FixedUpdate");    
    }
    private void OnGUI()    
    {        
    	Debug.Log("OnGUI");    
    }
    private void OnDisable()    
    {        
    	Debug.Log("OnDisable");    
    }
    private void OnEnable()    
    {        
    	Debug.Log("OnEnable");    
    }
}

运行时输出:

运行结果

4.查找脚本手册,了解 GameObject,Transform,Component 对象
  • 分别翻译官方对三个对象的描述:
    • GameObject: Unity Scenes中所有实体的基类。
    • Transform: 对象的位置,旋转和比例。
    • Component: 所有附加到GameObjects的基类。
  • 描述下图中table 对象(实体)的属性、table的Transform的属性、table 的部件:

table

table对象是GameObject:
第一行左侧为activeSelf属性,中间为对象的名称,右边为static属性;
第二行左侧为Tag属性,对对象进行标记;右侧为Layer属性,选择对象的框架;
第三行为预设属性。

Transform属性:
第一行为位置,第二行为旋转角度,第三行为比例。

Component属性:
包括Transform、Cube、Mesh Renderer等属性,可以通过Add Component添加。

  • 用 UML 图描述 三者的关系:

uml

5.资源预设(Prefabs)与 对象克隆 (clone)
  • 预设有什么好处?
    预设可以作为模板。预设能够重复利用;修改预设后,相同的游戏对象都会发生变化。
  • 预设与对象克隆关系?
    预设和其产生出来的对象是联系的,假如修改预设那么产生的对象也会被修改。
    克隆出的对象子体和母体相互独立,修改一个另一个并不会发生改变。
  • 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象:
    在Assets下新建Myprefabs文件,把table拉进去,然后挂载脚本,脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class prefabs : MonoBehaviour{     
    public GameObject obj;       
    void Start()      
    {        
	GameObject instance=(GameObject)Instantiate(obj);    
    }
    void Update()    
    {
    
    }
}

运行结果:

prefabs

生成实例对象

编程题

井字棋编程,见另一博客:井字棋

思考题

  • 微软 XNA 引擎的 Game 对象屏蔽了游戏循环的细节,并使用一组虚方法让继承者完成它们,我们称这种设计为“模板方法模式”。
    • 为什么是“模板方法”模式而不是“策略模式”呢?
      模板方法是规定代码的结构,使用者不改变代码的结构而改变其中的关键步骤。
      策略模式使用者要改变整个算法,其优势在于耦合性低。对于内部代码的改变不会影响到其他部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值