离散仿真引擎基础

1. 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。

  • 游戏对象(GameObjects):游戏对象是指出现在游戏界面或游戏场景中的物体,是通过资源整合的整体。游戏对象一般需要通过不同的脚本来构成游戏中的组件。
  • 资源(Assets):资源是游戏对象的特定的属性,例如颜色等。游戏对象可以通过使用资源来实现需要的要求。

2. 下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)

  • 资源的目录组织结构:一般包括动画(Animations),音效(Audio),材质(Materials),脚本(Scripts)等。
  • 游戏对象树的层次结构:一般为主摄像机,光源,游戏开始位置,游戏对象等。

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

  • 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()

  • 常用事件包括 OnGUI() OnDisable() OnEnable()

    public class Question3 : MonoBehaviour
         {
             void Awake()
             {
                 Debug.Log("Game awake");
             }
             void Start()
             {
                 Debug.Log("Game start");
             }

           	void Update()
             {
                 Debug.Log("Game update");
             }
             void FixedUpdate()
             {
                 Debug.Log("Game FixedUpdate");
             }
         
             void LateUpdate()
             {
                 Debug.Log("Game LateUpdate");    
             }
         
             void OnGUI()
             {
                 Debug.Log("Game OnGUI");
             }
         
             void OnDisable()
             {
                 Debug.Log("Game OnDisable");   
             }
         
             void OnEnable()
             {
                 Debug.Log("Game OnEnable");    
             }
         }
         

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

  • 分别翻译官方对三个对象的描述(Description)

  • GameObject: Base class for all entities in Unity Scenes.
    游戏对象:是在Unity场景中所有元素的基类。

  • Transform: Position, rotation and scale of an object.
    变换:一个对象的位置,角度以及缩放。

  • Component:Base class for everything attached to GameObjects.
    组件:所有和游戏对象有关的东西的基类。

  • 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件

    • 本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
    • 例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。

      Table对象有以下属性:Transform, Cube, Mesh Renderer,Box Collider等属性。
      Table 的Transform属性包括:Position(位置),Rotation(角度),Scale(缩放)。
      Table的部件有Mesh Renderer,Box Collider等属性。

  • 用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)
    在这里插入图片描述
    5. 整理相关学习资料,编写简单代码验证以下技术的实现:

  • 查找对象

  • 添加子对象

  • 遍历对象树

  • 清除所有子对象

  //查找对象
             void FindObject()
             {
                 var ToFind = GameObject.Find("To_Find");
                 if (null != ToFind) Debug.Log("Find");
                 ToFind = GameObject.Find("/To_Find");
                 if (null != ToFind) Debug.Log("Find");
             }
             //添加子对象
             void InitObject()
             {
                 GameObject ToAdd = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                 ToAdd.transform.position = new Vector3(0, 0, 0);
                 ToAdd.transform.parent = this.transform;
             }
             //遍历对象树
             void TraverseObjectTree()
             {
                 GameObject[] game = GameObject.FindObjectOfType<GameObject>();
                 foreach(GameObject tmp in game)
                 {
                     Debug.Log(tmp.name);
                 }
             }
         
             //清除所有子对象
             void DeleteAllSubObject()
             {
                 GameObject[] game = GameObject.FindObjectOfType<GameObject>();
                 foreach (GameObject tmp in game) GameObject.Destroy(tmp);
             }
     

6. 资源预设(Prefabs)与 对象克隆 (clone)

  • 预设(Prefabs)有什么好处?
    预设可以使得资源可以重复利用。
    相同或相似的游戏对象可以用同样的预设来创建。
    在修改预设的时候,所有的使用该预设的对象都会转变
  • 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
    预设不随游戏场景中的游戏对象变化,但是修改一个预设时,所有的游戏对象都会被修改。
    对象克隆出来的对象不会随克隆体的修改而修改。
  • 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
  • GameObject prefab = (GameObject)Instantiate (prefab1); 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值