Unity 3D作业二:离散仿真引擎基础

2023-11-05

前言

中山大学中山大学数据科学与计算机学院3D游戏课程学习记录博客。

简答题

1.解释游戏对象(GameObjects)和资源(Assets)的区别与联系。
  • 游戏对象:出现在游戏场景中,充当游戏的组件。游戏对象不做任何事情,需要特殊属性才能成为一个角色或者一种效果。
  • 资源:指游戏中使用到的各种东西,比如模型、音乐、图片等等。

资源可以被用与游戏对象的某种特殊属性,一个资源可以被多个游戏对象共享。

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

爱给网上下载了保卫萝卜的demo:
其中资源组织结构如下:

资源组织结构
其中包括Scenes(场景)、Scripts(精灵)等资源。
对象组织结构如下:
对象组织结构
包括一个摄像头和两个自己创建的游戏对象。

3.编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
  • 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate()
  • 常用事件包括 OnGUI() OnDisable() OnEnable()

代码如下:

using System.Collections;  
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : 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");    
    }
    private void Awake()    
    {        
    	Debug.Log("Awake");    
    }
    private void FixedUpdate()    
    {        
    	Debug.Log("FixedUpdate");    
    }
    private void OnGUI()    
    {        
    	Debug.Log("OnGUI");    
    }
    private void OnDisable()    
    {        
    	Debug.Log("OnDisable");    
    }
    private void OnEnable()    
    {        
    	Debug.Log("OnEnable");    
    }
}

运行时输出:

运行结果

4.查找脚本手册,了解 GameObject,Transform,Component 对象
  • 分别翻译官方对三个对象的描述:
    • GameObject: Unity Scenes中所有实体的基类。
    • Transform: 对象的位置,旋转和比例。
    • Component: 所有附加到GameObjects的基类。
  • 描述下图中table 对象(实体)的属性、table的Transform的属性、table 的部件:

table

table对象是GameObject:
第一行左侧为activeSelf属性,中间为对象的名称,右边为static属性;
第二行左侧为Tag属性,对对象进行标记;右侧为Layer属性,选择对象的框架;
第三行为预设属性。

Transform属性:
第一行为位置,第二行为旋转角度,第三行为比例。

Component属性:
包括Transform、Cube、Mesh Renderer等属性,可以通过Add Component添加。

  • 用 UML 图描述 三者的关系:

uml

5.资源预设(Prefabs)与 对象克隆 (clone)
  • 预设有什么好处?
    预设可以作为模板。预设能够重复利用;修改预设后,相同的游戏对象都会发生变化。
  • 预设与对象克隆关系?
    预设和其产生出来的对象是联系的,假如修改预设那么产生的对象也会被修改。
    克隆出的对象子体和母体相互独立,修改一个另一个并不会发生改变。
  • 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象:
    在Assets下新建Myprefabs文件,把table拉进去,然后挂载脚本,脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class prefabs : MonoBehaviour{     
    public GameObject obj;       
    void Start()      
    {        
	GameObject instance=(GameObject)Instantiate(obj);    
    }
    void Update()    
    {
    
    }
}

运行结果:

prefabs

生成实例对象

编程题

井字棋编程,见另一博客:井字棋

思考题

  • 微软 XNA 引擎的 Game 对象屏蔽了游戏循环的细节,并使用一组虚方法让继承者完成它们,我们称这种设计为“模板方法模式”。
    • 为什么是“模板方法”模式而不是“策略模式”呢?
      模板方法是规定代码的结构,使用者不改变代码的结构而改变其中的关键步骤。
      策略模式使用者要改变整个算法,其优势在于耦合性低。对于内部代码的改变不会影响到其他部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity 3D作业二:离散仿真引擎基础 的相关文章

随机推荐

  • 自动化接口测试实战-第04天-读取外部数据文件、iHRM项目实战

    更多功能测试以及全套学习路线图均在专栏 戳进去领取 系列文章目录 身为开发必知必会的Linux Linux远程连接 命令的使用 Linux命令大全 唯一以案例详解文 持续更新中 Linux命令大全以及数据库 唯一以案例详解文 已完结 Web
  • 一次CNVD-2020-10487漏洞利用

    0x00漏洞简介 CNVD 2020 10487 tomcat ajp文件读取漏洞 0x01开始 某次对一个目标进行测试 用routerscan扫描搜集的C段资产 发现某个IP开放了22 6379 8009等端口 看到8009就想到了tom
  • 服务器ssd硬盘接笔记本,M.2固态硬盘怎么安装 台式机与笔记本电脑安装M.2 SSD方法图解...

    固态硬盘接口众多 不过目前最流行的还是SATA3 0和M 2接口SSD 不过 伴随着SATA3 0接口存在性能瓶颈 越来越多高速固态硬盘采用了M 2接口 那么M 2固态硬盘怎么安装 下面脚本之家就来教大家如何给台式电脑或者笔记本安装M 2固
  • 2.5.5 创建、安装VIO分区

    最后更新2021 07 26 与创建AIX分区相同 但在HMC选择创建vio server 分区 图 261 创建VIO分区 输入分区名 VIO分区的Partition ID与名称都可以随意指定 但为了便于管理 建议分区的名称就是用DNS可
  • 静态分析的四种基本方法

    数据流分析 Data Flow Analysis 将数据看作是图 节点是程序的基本快 边是描述控制如何从一个基本快转移掉另一个基本快 图可以解决很多问题 例如 以 图中边的抽象得出数学方程 七届就是可达性问题的答案 PREfix SLAM静
  • 服务器怎么清空系统盘,服务器怎么清空数据

    服务器怎么清空数据 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 无法看到 Windows 实例数据盘怎么办 磁盘挂载至
  • IPFS方得社区周欢:web3.0时代的分布式存储畅想

    链茶访是链茶馆新开辟的区块链项目报道专栏 每周会对一个项目团队进行专访 链茶馆将挖掘不同项目的闪光点 讲述区块链开发者的创业故事 为各位区块链同侪提供最新的项目资讯与行业动向 链茶馆今天采访了IPFS方得社区创始人周欢 该社区目前有4万用户
  • unity 常用的设计模式

    一 单例模式 在我们的整个游戏生命周期当中 有很多对象从始至终有且只有一个 这个唯一的实例只需要生成一次 并且直到游戏结束才需要销毁 单例模式一般应用于管理器类 或者是一些需要持久化存在的对象 优点 写起来很方便 调用方便 缺点 容易形成依
  • 深度学习3D可视化工具——Zetane Engine

    神经网络在工作的时候 里面到底是什么样 为了能透视这个 AI黑箱 中的过程 加拿大蒙特利尔一家公司开发一个3D可视化工具Zetane Engine 只需要上传一个模型 Zetane Engine就可以巡视整个神经网络 并且还可以放大网络中的
  • React-Router实战:路由传参(正则表达式)

    首先我们先做个路由普通传参的例子 一 准备工作 1 目录结构 index js components App gt App js Home gt Home js About gt About js News gt News js 2 源码
  • Qt常用命令和pro参数

    Qt常用工具 命令行指令 位于 C Qt5 7 1 5 7 msvc2015 64 bin 命令 功能 assistant 帮助文档 designer 设计器 linguist 翻译工具 lupdate 提取翻译字符串和生成ts文件 lre
  • logback不输出至文件_Logback日志使用详解

    Logback是由log4j创始人设计的一个开源日志组件 概述 Logback建立于三个主要类之上 日志记录器 Logger 输出端 Appender 和日志格式化器 Layout 这三种组件协同工作 使开发者可以按照消息类型和级别来记录消
  • caffe 红绿灯识别

    coding utf 8 加载必要的库 import numpy as np import sys os 设置当前目录 caffe root home ubuntu caffe sys path insert 0 caffe root py
  • Report, 20150402, Formulas on Entropy, Part I

    Section 1 Papoulis s Formula Lemma 1 If the random variables y 1 ldots y n are the linear combination of random variable
  • Artifactory Maven 使用教程

    Maven 仓库使用 修改 Maven 配置文件 选择左侧 Artifacts 选择自己需要上传的 Maven 仓库 点击Set Me Up 在弹出的设置框中点击 点击下载生成的文件 将生成的文件放到此目录下 或者你自己的 Maven 目录
  • 线性回归模型

    线性回归是最简单的机器学习模型 也是最基础最重要的分析工具 易于实现 本文将将简单讲述线性回归 最小二乘法和梯度下降三种算法 目录 1 线性回归方程 OLS 2 最小二乘法 OLS 3 梯度下降 GD 3 1超参数 的选择 3 2局部最小值
  • Android使用OpenCV来实现bitmap独立设置每个圆角

    Android使用OpenCV来实现bitmap独立设置每个圆角 关于opencv集成请参考我的其他文章 这里方便起见已经封装成java方法供大家调用 代码如下 public static Bitmap drawCircleRadius i
  • 打乱1-100的个数字的顺序

    package test import java util Random public class Test2 public static void swap int a int i int j if a null a length 0 i
  • Weex页面的编写——Weex的学习之路(六)

    通过前几博客我们把weex的内置组件都学习完了 组件的单独使用想必都可以了 那么 这次我们来做weex实际页面的编写 见证一下 一套代码在Android Ios和H5上使用 在weex官网推荐我们使用Weex Studio作为编译器 其实这
  • Unity 3D作业二:离散仿真引擎基础

    前言 中山大学中山大学数据科学与计算机学院3D游戏课程学习记录博客 简答题 1 解释游戏对象 GameObjects 和资源 Assets 的区别与联系 游戏对象 出现在游戏场景中 充当游戏的组件 游戏对象不做任何事情 需要特殊属性才能成为