3D游戏——第二节作业

一、简答题

  1. 解释游戏对象(GameObjects) 和 资源(Assets)的区别与联系
    答:GameObjects 指游戏中实际使用的东西,屏幕上看见的东西。Assets 指游戏中需要的资源,项目文件中所堆放的资源

    联系:GameObjects是由Asset实例化后的对象,本质上其实还是Asset的衍变,是对部分Asset的引用和复制出来的新东西,其本质还是Asset。

  2. 下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
    答:
    资源结构主要包括动画,文本,场景和一些使用说明等。
    游戏对象树的层次包括摄像机,开始位置,场景布局以及文本等。

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

    答:

public class ExampleClass : 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");
    }
 }
  1. 查找脚本手册,了解 GameObject,Transform,Component 对象
    分别翻译官方对三个对象的描述(Description)
    描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
    本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
    例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
    用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)
    workwork

  2. 翻译:Gameobject是一个类型,所有的游戏物件都是这个类型的对象。Transform是一个类,用来描述物体的位置,大小,旋转等等信息。Component是用来绑定到Game Object上的一组相关属性。本质上每个组件是一个类的实例

  3. 图片描述
    在这里插入图片描述
    table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
    第二个是名称,第三个是static属性;第二行是tag和layer;第三行的prefab。
    Transform包括三个坐标的xyz值,分别是position位置,Rotation旋转和Scale比例。
    Component有Transform,Mesh Filter,Box Collider,Mesh Renderer。

  4. UML 在这里插入图片描述

  5. 整理相关学习资料,编写简单代码验证以下技术的实现:
    查找对象
    添加子对象
    遍历对象树
    清除所有子对象

//查找
        var cubeF = GameObject.Find("Cube");
        if (null != cubeF) {
            Debug.Log ("find cube");
        }
        cubeF = GameObject.Find ("/Cube");
        if (null != cubeF)
            Debug.Log ("find cube~");
     
 //添加子对象
public staticGameObect CreatePrimitive(PrimitiveTypetype)

//遍历对象树
        foreach (Transformchild in transform) {
         Debug.Log(child.gameObject.name);
}

//删除所有子对象
        foreach (GameObject tem in game) {
            GameObject.Destroy (tem);
        }

  1. 资源预设(Prefabs)与 对象克隆 (clone)
    预设(Prefabs)有什么好处?
    预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
    制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象

    答: 预设是模板,可以通过模板创建属性相同的多个对象。
    而对象克隆不会受克隆对象本体的影响,克隆成功后二者独立存在。

  2. 尝试解释组合模式(Composite Pattern / 一种设计模式)。使用 BroadcastMessage() 方法
    向子对象发送消息

    答:Composite Pattern是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

父类

void pass(){
	Debug.log("son");
}
void Start(){
	this.BroadcastMessage("pass");
}

子类

void pass(){
	Debug.log("son");
}

二、井字棋

井字棋的github链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值