一、简答题
-
解释游戏对象(GameObjects) 和 资源(Assets)的区别与联系
答:GameObjects 指游戏中实际使用的东西,屏幕上看见的东西。Assets 指游戏中需要的资源,项目文件中所堆放的资源联系:GameObjects是由Asset实例化后的对象,本质上其实还是Asset的衍变,是对部分Asset的引用和复制出来的新东西,其本质还是Asset。
-
下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
答:
资源结构主要包括动画,文本,场景和一些使用说明等。
游戏对象树的层次包括摄像机,开始位置,场景布局以及文本等。 -
编写一个代码,使用 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");
}
}
-
查找脚本手册,了解 GameObject,Transform,Component 对象
分别翻译官方对三个对象的描述(Description)
描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)
workwork -
翻译:Gameobject是一个类型,所有的游戏物件都是这个类型的对象。Transform是一个类,用来描述物体的位置,大小,旋转等等信息。Component是用来绑定到Game Object上的一组相关属性。本质上每个组件是一个类的实例
-
图片描述
table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
第二个是名称,第三个是static属性;第二行是tag和layer;第三行的prefab。
Transform包括三个坐标的xyz值,分别是position位置,Rotation旋转和Scale比例。
Component有Transform,Mesh Filter,Box Collider,Mesh Renderer。 -
UML
-
整理相关学习资料,编写简单代码验证以下技术的实现:
查找对象
添加子对象
遍历对象树
清除所有子对象
//查找
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);
}
-
资源预设(Prefabs)与 对象克隆 (clone)
预设(Prefabs)有什么好处?
预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象答: 预设是模板,可以通过模板创建属性相同的多个对象。
而对象克隆不会受克隆对象本体的影响,克隆成功后二者独立存在。 -
尝试解释组合模式(Composite Pattern / 一种设计模式)。使用 BroadcastMessage() 方法
向子对象发送消息答:Composite Pattern是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
父类
void pass(){
Debug.log("son");
}
void Start(){
this.BroadcastMessage("pass");
}
子类
void pass(){
Debug.log("son");
}
二、井字棋