简答题
- 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。
- 游戏对象是Unity中表示人物、道具和场景的基础对象。它们本身并没有完成多少工作,但是它们充当真正实现功能的组件的容器。
- 资源代表所有你能用在你的游戏或工程中的项目。资源可能来自创建于Unity之外的文件,例如3D模型,音频文件,图片或者任何Unity支持的其他类型的文件。也有许多资源类型是创建于Unity中的,例如ProBuilder Mesh,Animator COntroller,Audio Mixer,或Render Texture。
- 下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
- 资源的目录组织结构
- 动画
- 音频
- 资源包
- 字体
- 材质
- 模型
- 预设
- 场景
- 脚本化渲染管道
- 纹理
- 阴影
- 特效
- 插件
- 图标
- 游戏对象树的层次结构
- 摄像机
- 对象实体
- 背景
- 光线
- 资源的目录组织结构
- 编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
- 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
- 常用事件包括 OnGUI() OnDisable() OnEnable()
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestifyBeh : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log("This Start!");
}
// Update is called once per frame
void Update()
{
//Debug.Log("This Update!");
}
void Awake()
{
Debug.Log("This Awake!");
}
void FixedUpdate()
{
Debug.Log("This FixUpdate!");
}
void LateUpdate()
{
Debug.Log("This LateUpdate!");
}
void OnGUI()
{
Debug.Log("This OnGUI!");
}
void OnDisable()
{
Debug.Log("This Disabled!");
}
void OnEnable()
{
Debug.Log("This Enabled!");
}
}
- 查找脚本手册,了解 GameObject,Transform,Component 对象
- 分别翻译官方对三个对象的描述(Description)
- GameObject:Unity场景中所有实体的基类。
- Transform:对象的位置,旋转和缩放 。
- Component:一切附加到游戏对象的基类。
- 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
- table的对象是GameObject,第一个选择框是activeSelf 属性,第二个文本框是对象名称,第三个选择框为static属性。第二行有Tag属性和Layer属性,第三行为prefabs(预设)属性。Transform属性包括position(位置),Rotation(旋转),Scale(比例)。Component对象有Transform,Mesh Filter,Box Collider,Mesh Renderer。
- 用 UML 图描述 三者的关系
- 分别翻译官方对三个对象的描述(Description)
- 资源预设(Prefabs)与 对象克隆 (clone)
- 预设(Prefabs)有什么好处?
- 预设 (Prefabs) 可放入到多个场景中,且每个场景可使用多次。向场景添加一个预设 (Prefab) 时,就会创建它的一个实例。所有预设 (Prefab) 实例都链接到原始预设 (Prefab),实质上是原始预设的克隆。不管您的工程中有多少个实例,您对预设 (Prefab) 作薄出任何更改时,您会看到这些更改应用于所有实例。
- 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
- 克隆游戏对象需要场景中有被克隆对象,而创建预制只需事先创建预制即可,允许场景中一开始并不存在该游戏对象。
- 克隆出来的游戏对象并不会随着被克隆体的变化而发生变化,但是使用预制创建出来的对象会随着预制的改变而发生改变。
- 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
using UnityEngine; public class InstantiationExample : MonoBehaviour { // Reference to the Prefab. Drag the table into this field in the Inspector. public GameObject myPrefab; void Start() { Instantiate(myPrefab); } }
- 预设(Prefabs)有什么好处?