文章目录
简答题
解释游戏对象与资源的区别与联系
区别
游戏对象:是放置各种组件(包括常用的变换组件等)的一个容器,代表了各种人物、道具或者是场景,对象本身不能完成很多工作,但是里面的组件共同完成功能。
资源:是自行设计或者从商店下载的,可以附加在游戏对象上的一种素材,可以是对象外观、脚本、音频等,可以被多个不同的对象使用。相比于对象来讲,资源更加丰富,像是一种可扩展的模板包。
联系
资源作为对游戏对象的辅助,既可以被对象使用,增强其外观或功能。资源本身也能够实例化,采用预制的方式可以实例化一个对象。
下载几个游戏案例,分别总结资源、对象组织的结构
对象组织结构
以下是一个3d赛车游戏(游戏项目链接)的开始菜单面板的结构:

这个层次结构就跟我们的分类一样,跟编程语言中的类的结构也是一样。
主菜单由多个按钮聚合而成,而按钮又是由文字等对象构成的。其余结构也类似。
也可以参考老师课件的内容:


资源的结构
资源结构包括了素材、模型、预制、文字、脚本、场景等等。

编写一个代码,使用 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

最低0.47元/天 解锁文章
391

被折叠的 条评论
为什么被折叠?



