unity3D-learing my first game : A easy calculator

本文详细解析了游戏开发中游戏对象(GameObjects)与资源(Assets)的区别与联系,介绍了资源和游戏对象的组织结构,并提供了Unity中MonoBehaviour行为及事件触发的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简答题

  • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系。
  •    两者之间的区别: 
  •           游戏对象(GameObjects):游戏中的每一个对象都是一个游戏对象。他们本身不会做任何事情,我们赋予他们各自的属性之后,就成为了我们在游戏中看到的角色或环境等。例如我们设置的玩家,关卡等他们都属于游戏对象,我们通过给他们添加各种属性火环境,让他们成为游戏对象。可以将游戏对象看成是一个空容器,我们向其加入其中的组件和赋予其的属性后,它变得与其他游戏对象不同。
  •          资源(Assert):资源指的是项目中的素材,包括我们的音频,图片,图片,图像,脚本文件,材质,场景,动作资源等。资源可以导入游戏的程序项目中,之后被项目提供原材料,被添加到游戏对象上去。
  •    两者之间的联系: 
  •     资源通过导入游戏内可以被加到游戏对象上,配合游戏对象完成相应的设计。同时资源可以组件或者整个游戏对象创建游戏实例。

  • 2.下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
  •         资源结构:资源通过一定的分类能够分成很多种种类,在游戏案例中,一般存在模型,音频,动画,脚本代码,预设,模型等。这些东西分别设立不同的文件夹,并且由于种类对应相应的名字。
  •  
  • 这样的一个游戏案例,它包含了音频,场景,文本,脚本,等,其中将音频单独放入Audio文件夹,游戏人物放入Sprites文件夹,将帮助信息放入到TutorialInfo文件夹,预设放入Prefabs。同时把游戏的核心放入到_Complete-Game文件夹下,code放入到Scripts,场景放入到Scenes等。
  • 对象组织的结构:对象组织的结构一般是树形结构,有些类存在继承等关系,从而实现了一个类下可以存在多个子类,同时子类又可以有自己的子类,进而实现树形结果。
  • 3.写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
    • 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
    • 常用事件包括 OnGUI() OnDisable() OnEnable()
    • 答:实现代码如下:
    • using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      
      public class NewBehaviourScript : MonoBehaviour
      {
    •     void Awake()
          {// 基本行为
              Debug.Log("Awake");
          }
      
          //  基本行为
          void Start()
          {
              Debug.Log("Start");
          }
      
        //  基本行为
      // Update is called once per frame 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"); }}
    • Awake行为是在脚本实例被加载时即被调用
    • Start行为仅在游戏开始时调用一次,之后不再调用,也就是在update第一次调动之前调用一次
    • Update行为每一帧触发一次,是实现动画游戏的基础。
    • FixedUpdate行为是在自行设定的帧频下,每一帧触发一次
    • LateUpdate在所有的updata结束后调用
    • OnGUI事件是当渲染和绘制GUI事件时被调用
    • OnDisable事件是当行为变得无效或者非激活状态的时候被调用,用于清理代码等
    • OnEnable事件是当对象启用并激活的时候被调用

  • 查找脚本手册,了解 GameObject,Transform,Component 对象
    • 分别翻译官方对三个对象的描述(Description)
    • 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
      • 本题目要求是把可视化图形编程界面与 Unity API 对应起来,当你在 Inspector 面板上每一个内容,应该知道对应 API。
      • 例如:table 的对象是 GameObject,第一个选择框是 activeSelf 属性。
    • 用 UML 图描述 三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)

    答:1.三个对象的官方描述:

  • GameObject是Unity场景里面代表人物,道具,场景的基础对象,所有实体的基类。某种程度上就是一个容器的定义。是他们实现了游戏对象容器的特点。
  • Transform是用于储存并操控物体的位置、旋转和缩放的类。用于操作对象的位置,角度等。
  • Component是游戏物体一切附加类的基类。比如它是Transform的基类。通过组件能够为游戏对象添加各种脚本行为等。

         2.table的介绍

  • table的属性有layer(图层),active(非静态)tag(标签,untagged)的属性等。
  • transform的属性有position,rotation,scale等。其中
    • Position: (0, 0, 0)
    • Rotation: (0, 0, 0)
    • Scale : (1, 1, 1)
  • table 的部件(Components)指 transform,Mesh filter,Box Collider等


        3.三者关系:



workwork

  • 4.整理相关学习资料,编写简单代码验证以下技术的实现:
    • 查找对象
    • 添加子对象
    • 遍历对象树
    • 清除所有子对象
      • 通过名称查找单个对象、
      • public static GameObject Find(string name); 
      • 通过标签查找单个对象
      • public static GameObject FindWithTag(string tag);
      • 通过标签查找多对象
      • public static GameObject[] FindGameObjectsWithTag(string tag);
      • 通过类型查找单个对象
      • GameObject.FindObjectOfType(string typename)
        ;
      • 通过类型查找多个对象
      • GameObject.FindObjectsOfType(string typename)
      • 
        
      • public static GameObect CreatePrimitive(PrimitiveTypetype);遍历对象树
    • 添加子对象
    • public static GameObect CreatePrimitive(PrimitiveTypetype);
    • 遍历对象树
    • foreach (Transform child in transform) {  
          Debug.Log(child.gameObject.name);  
      } 
    • 清除所有子对象
    • foreach(Transform child in transform)
        {
            Destroy(child.gameObject);
        }
  • 5.资源预设(Prefabs)与 对象克隆 (clone)
    • 预设有什么好处
    • 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
    • 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
  • 答:
    • 预设的优点:预设可以看成是一个模板,可以迅速方便创建大量相同属性的对象、操作简单,代码量少,减少出错概率。,将比较容易多次使用的对象预设,这样以后在重复使用该实体集时就不用再一一使用底层的对象去创建和拼接。
    • 预设与克隆的区别:预设的属性一旦改变,其所有实例也会跟着改变,而克隆的个体之间是相互独立的,因此修改对于克隆是没有改变的。

  • 尝试解释组合模式(Composite Pattern / 一种设计模式)。使用 BroadcastMessage() 方法
    • 向子对象发送消息
    答:组合模式(Composite Pattern / 一种设计模式):用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。组合模式是将对象组合成树形结构以表示“部分-整体”的层次结构,它使得用户对单个对象和组合对象的使用具有一致性。

       代码:

public class Father : MonoBehaviour {
    void test()
    {
        Debug.Log("Hello, dear son!");
    }
    void Start () {
         this.BroadcastMessage("test");
    }
}

public class Child : MonoBehaviour {
    void test()
    {
        Debug.Log("Hi, my dear father");
    }
}



一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值