Unity3d——离散仿真引擎基础

简答题

解释游戏对象与资源的区别与联系

区别

游戏对象:是放置各种组件(包括常用的变换组件等)的一个容器,代表了各种人物、道具或者是场景,对象本身不能完成很多工作,但是里面的组件共同完成功能。

资源:是自行设计或者从商店下载的,可以附加在游戏对象上的一种素材,可以是对象外观、脚本、音频等,可以被多个不同的对象使用。相比于对象来讲,资源更加丰富,像是一种可扩展的模板包。

联系

资源作为对游戏对象的辅助,既可以被对象使用,增强其外观或功能。资源本身也能够实例化,采用预制的方式可以实例化一个对象。


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

对象组织结构

以下是一个3d赛车游戏(游戏项目链接)的开始菜单面板的结构:
hierarchy
这个层次结构就跟我们的分类一样,跟编程语言中的类的结构也是一样。
主菜单由多个按钮聚合而成,而按钮又是由文字等对象构成的。其余结构也类似。
也可以参考老师课件的内容:
在这里插入图片描述
在这里插入图片描述

资源的结构

资源结构包括了素材、模型、预制、文字、脚本、场景等等。
在这里插入图片描述


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

编写以下代码,并将脚本组建添加到某个游戏对象中去。

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

public class TestBehavior : 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");
    }

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

    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");
    }
}

点击运行,查看控制台输出:
在这里插入图片描述可以参考官方文档的说法,MonoBehaviour 基本行为或事件触发的条件:
中文手册可参考:游戏蛮牛

Awake:当一个脚本实例被载入时Awake被调用。
Start:Start仅在Update函数第一次被调用前调用。
FixedUpdate:当MonoBehaviour启用时,其 FixedUpdate 在每一固定帧被调用。这个固定帧的时间可以在Edit->Project Setting->Time->Fixed Timestep来设置。通常用于物理属性的更新操作,使其变化更平滑。
Update:在每一帧被调用。相比于FixedUpdate,Update更新的时间不固定,收到被渲染的物体的影响,时快时慢。是最常用的一个函数。
LateUpdate:在所有Update函数调用后才被调用。可以用于相机追踪物体的实现。由于每个Update先后顺序是随机的,所以可能会出现相机先移动而造成景象抖动的情况。
OnEnable:当对象变为可用或激活状态时此函数被调用。
OnDisable:当对象被禁用或销毁的时候调用。(在这次测试中,停止运行时,也就是在控制台最后被调用)。
OnGUI:为了响应GUI事件,每帧会被调用多次(一般最低两次)。


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

翻译官方脚本手册描述

(以下描述结合了部分Manual手册描述)

  • GameObject
    所有在Unity场景中的实体的基类,是放置各种组件的一个容器,由各类组件完成该对象的功能。
  • Transform
    变换组件,每一个对象都拥有的组件。决定一个对象的位置、旋转角度、缩放比例。
  • Component
    一切附加到游戏物体的基类。游戏对象实现功能的主体。

描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table的部件(图不见了??)

  • table实体属性
    第一个选择框是决定是否激活对象,文本框对应的是对象实体的名字,Static选择框则是对象是否标记为静态对象(不太理解)。
    还有Tag和Layer属性。
  • Tranform属性
    包括位置XYZ坐标、XYZ方向的旋转角度、沿XYZ轴的缩放比例。
  • 部件
    Transform,Mesh Filter,Box Collider,Mesh Renderer,还有自己添加的Script脚本。

用 UML 图描述三者的关系(GameObject, Transform,Component)

在这里插入图片描述

整理相关学习资料,编写简单代码验证以下技术的实现

查找对象

var obj = GameObject.Find("Cube");
if (obj != null) Debug.Log("Cube was Found!");

添加子对象

GameObject obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj2.name = "chair1";
obj2.transform.position = new Vector3((float)(1.5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值