Unity3d离散仿真引擎基础

2023-10-27

1. 解释对象与资源的区别与联系
  • 对象:对象直接出现在游戏场景中,是资源整合的具体表现,对象一般有玩家,敌人,游戏场景,摄像机等虚拟父类,这些父类没有实例化,而他们的子类实例化并包含了这些游戏对象,我们可以对这些对象进行操作。
  • 资源:资源可以是我们自定义或下载下来的素材,可以被多个对象使用,有些资源可以做为模板并实例化为对象。资源文件夹(Asset)通常包含脚本,预设,场景,声音等。
2. 下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)
  • 资源的目录组织结构:
    • 主要包括动画,文本,场景,素材,模型,预设以及使用说明等。
  • 游戏对象树的层次结构:
    • 主要包括摄像机包,游戏开始位置,场景布局以及文本管理等。
3. 编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件
public class firstTry : MonoBehaviour {
    //Awake() Start() Update() FixedUpdate() LateUpdate()OnGUI() OnDisable() OnEnable()
    // Use this for initialization
    void Awake(){
        Debug.Log ("onAwake");
    }
    void Start () {
        Debug.Log ("onStart");
    }

    // Update is called once per frame
    void Update () {
        Debug.Log ("onUpdate");
    }

    void FixedUpdate(){
        Debug.Log ("onFixedUpdate");
    }
    void LateUpdate(){
        Debug.Log ("onLateUpdate");
    }
    void OnGUI(){
        Debug.Log ("onGUI");
    }
    void OnDisable()
    {
        Debug.Log ("onDisable");
    }
    void OnEnable(){
        Debug.Log ("onEnable");
    }
}
3. 查找脚本手册,了解 GameObject,Transform,Component 对象
  1. 分别翻译官方对三个对象的描述(Description)
    GameObjects是Unity中代表角色,道具和风景的基本对象。它们本身并不是很完整,但它们充当组件的容器实现了具体的功能。
    Transform变换组件决定了每个对象在场景中的位置,比例和旋转,每个对象都有一个变换组件。
    组件(Component)是用来绑定到游戏对象(Game Object)上的一组相关属性。本质上每个组件是一个类的实例。
  2. 描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件
    table的对象是GameObject,第一个选择框是activeSelf 属性,第二个文本框是对象名称,第三个选择框为static属性。第二行有Tag属性和Layer属性,第三行为prefabs(预设)属性。Transform属性包括position(位置),Rotation(旋转),Scale(比例)。Component对象有Transform,Mesh Filter,Box Collider,Mesh Renderer。
  3. 用 UML 图描述 三者的关系
    这里写图片描述
4. 整理相关学习资料,编写简单代码验证以下技术的实现:
  • 查找对象
  • 添加子对象
  • 遍历对象树
  • 清除所有子对象
        //按名字查找
        var cubeF = GameObject.Find("Cube");
        if (null != cubeF) {
            Debug.Log ("find cube");
        }
        cubeF = GameObject.Find ("/Cube");
        if (null != cubeF)
            Debug.Log ("find cube~");
        //按标签查找
        var sphere = GameObject.FindWithTag("Sphere");  
        if (null != sphere)  
        {  
            Debug.Log("Sphere~");  
        } 
        //添加子对象到init
        GameObject circle = GameObject.CreatePrimitive (PrimitiveType.Sphere);
        circle.transform.position = new Vector3 (2, 2, 2);
        circle.transform.parent = father.transform;
        //遍历对象树
        GameObject[] game = GameObject.FindObjectsOfType<GameObject>();
        foreach (GameObject tem in game) {
            Debug.Log (tem.name);
        }
        //删除所有子对象
        foreach (GameObject tem in game) {
            GameObject.Destroy (tem);
        }
5. 资源预设(Prefabs)与 对象克隆 (clone)
  1. 预设(Prefabs)有什么好处?
    1.使对象和资源能够重复利用。
    2. 相同的游戏对象可以用同一个预制来创建。
    3. 对预设进行修改后,所有的游戏对象都会发生改变。
    总体而言,预设资源储存了完整储存了对象的组件和属性,相当于模板,使用预制能够方便我们创建相同的游戏对象并赋予他们相同的行为,比如用一块砖创建一堵墙。
  2. 预设与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
    1. 克隆游戏对象需要场景中有被克隆对象,而创建预制只需事先创建预制即可,允许场景中一开始并不存在该游戏对象。
    2. 克隆出来的游戏对象并不会随着被克隆体的变化而发生变化,但是使用预制创建出来的对象会随着预制的改变而发生改变。
  3. 制作 table 预制,写一段代码将 table 预制资源实例化成游戏对象
GameObject prefab = (GameObject)Instantiate (prefab1);
6. 尝试解释组合模式(Composite Pattern / 一种设计模式)。使用 BroadcastMessage() 方法, 向子对象发送消息。
  • 答:组合模式允许用户将对象组合成树形结构表现“整体-部分”的层次结构,使得客户以一致的方式处理单个对象以及对象的组合,组合模式实现的关键地方是单个对象与复合对象必须实现相同的接口,这就是组合模式能够将组合对象和简单对象进行一致处理的原因。
    父对象:
    void test(){
        Debug.Log ("Hello world");
    }
    // Use this for initialization
    void Start () {
        this.BroadcastMessage ("test");
    }        

子对象:

     void test(){
        Debug.Log ("Hello world");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3d离散仿真引擎基础 的相关文章

  • BTC协议

    假如先把去中心化的前提先去掉 我们都信赖一个中心化的机构比如说央行 央行发行货币是由印钞厂那里印钞等等的顺序后才开始发行货币的也就是我们以前最常见的纸币等 而想一下央行要是不发行实物货币了转为发行虚拟货币 央行的公钥我们是都知道的 而我在和
  • request.getParameter() 和request.getAttribute() 区别

    getParameter 是用来接受用post个get方法传递过来的参数的 getAttribute 必须先setAttribute 1 request getParameter 取得是通过容器的实现来取得通过类似post get等方式传入
  • PTA 剥洋葱(C语言 + 详细注释 + 代码超简单)

    输入格式 一行 一个整数 即图形的层数 输出格式 如上述图形 输入样例 3 输出样例 AAAAA ABBBA ABCBA ABBBA AAAAA 打印图形题关键是找规律 一般只需两重循环 行循环 列循环 include
  • 背景的设置、渐变和雪碧图

    一 背景的设置和和可选值 1 background color 设置背景颜色 2 background image来设置背景图片 语法 background image url 相对路径 可以同时为一个元素指定背景颜色和背景图片 这样背景颜
  • Unity3d离散仿真引擎基础

    1 解释对象与资源的区别与联系 对象 对象直接出现在游戏场景中 是资源整合的具体表现 对象一般有玩家 敌人 游戏场景 摄像机等虚拟父类 这些父类没有实例化 而他们的子类实例化并包含了这些游戏对象 我们可以对这些对象进行操作 资源 资源可以是
  • 同时存在js和jq时的相互定义转换

    div div div div
  • Tomcat远程访问不到的问题

    Android老人学SpringBoot Tomcat在Linux端部署 远程访问不到的解决思路 解决思路 Tomcat在Linux端部署 远程访问不到的解决思路 Linux环境配置 服务器部署等不详细说 默认大家已经做好了 老人小白 今天
  • Unity新手基础知识系列—序

    前提提要 本系列主要内容是根据 Unity中文文档来总结的 其实本人也是现在正在学习Unity相关基础 可能有一些理解不到位或者理解错误的地方 望大家指正 为什么写这个系列 1 为了记录自己学习的内容 方便以后自己再查阅 2 巩固知识体系
  • 布尔盲注之sqlmap爆破

    布尔盲注之sqlmap爆破 好久没有更新了 语句也忘的差不多了 作为菜鸟的我也是终于弄懂了这道题 以及部分语句的意思 我将用尽可能详细且易理解的语言来表达 sqlmap爆破 首先你得下载sqlmap csdn中刚好有 注入语句 python
  • java对象和类的定义 属性 方法

    类 class 对象 Object instance 实例 1 类可以看成一类对象的模板 对象可以看成该类的一个具体实例 2 类是用于描述同一类型的对象的一个抽象概念 类中定义了这一类对象所应具有的共同属性 方法 类的定义方式 每一个源文件
  • div和section有什么区别?在加一个article标签

    1 div在html早期版本就支持了 section和article是html5提出的两个语义化标签 如果只是针对一个块内容做样式化 三者并无区别 2 作为语义化标签 section 应用的典型场景有文章的章节 标签对话框中的标签页 或者论
  • Python简单实现数据降噪滤波处理_滢泷版

    Python简单实现数据降噪 滤波处理 滢泷版 由于项目需要对数据进行降噪滤波处理 又要尽可能保证变化特征不失真 我在网上搜索了一下Python的方库 没找到 我安装了scipy 之后找不到spline方法 也就知道怎么用了 顺便说一下 本
  • JQ工具2

    JQ工具2 开发工具与关键技术 VS JQ 作者 唐文坚 撰写时间 2020 10 17 jQuery extend deep target object1 objectN 概述 用一个或多个其他对象来扩展一个对象 返回被扩展的对象 如果不
  • 浮动的特点

    一 什么是浮动 1 浮动概念 是一种布局方式 可以让元素脱离文档流 一旦元素脱离文档流 就不再具有元素在文档流中的特点 从而帮助我们布局 2 设置浮动 float样式名 可选值 none 不浮动 默认值 left 向左浮动 right 向右
  • css的浮动及高度塌陷

    一 高度塌陷 一般情况 我们的父元素是不设置高度的 让其被内容自动撑开 如果子元素设置浮动了 子元素会脱离文档流 就不能再撑开父元素的高度 从而导致父元素的高度丢失 导致页面布局的混乱 这就是高度塌陷问题 这个问题也必须要解决 解决高度塌陷
  • 冒泡排序详解(C语言)

    对于刚入门学习编程的新手来说 冒泡排序应该是大家接触的第一个算法 由于刚接触编程不久 新手的思维还没有得到很好的开拓 冒泡排序在一开始对新手来说有些难理解 现在就让我们来看看新手如何更好的来理解冒泡排序算法 冒泡排序的思路 假设数组有n个数
  • HTML中li去除样式以及占位问题

    在HTML中 使用 ul li li ul 的时候 总是会在列表的前面出现小圆点 去掉小圆点使用的方法很简单 就是直接使用CSS选择器进行选择之后进行样式的设定 具体应用如下 但是在去除小圆点之后仍然会存在问题 我们会发现使用此法去除小圆点
  • Session机制

    除了使用Cookie Web应用程序中还经常使用Session来记录客户端状态 Session是服务器端使用的一种记录客户端状态的机制 使用上比Cookie简单一些 相应的也增加了服务器的存储压力 什么是Session Session是另一
  • 关于python爬虫的准备工作

    目录 1 什么是网络爬虫 2 准备工作 1 什么是网络爬虫 百度百科所给注释如下 网络爬虫 又称为网页蜘蛛 网络机器人 在FOAF社区中间 更经常的称为网页追逐者 是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的
  • 《斗破CPP》 第叁章(中) ---- 左值右值问题

    斗破CPP 第叁章将会分成上中下三部分分享给大家 上 偏向于讲述循环 中 讲1个中级难度的运算符 下 偏向于讲解具有强大功能的语句以及控制符 不管有基础还是没基础的小伙伴 都可以重点看看 上 后半部分 中 前半部分 下 后半部分小总结 目录

随机推荐

  • 正则表达式的简单说明

    标识符 说明 备注 d 0 9任意一个数字 w 任意一字母或者下划线或数字 a z A Z 0 9 和 s 包括空格 制表符 换行符等空白字符的其中一个 小数点可以匹配任意字符 除了换行符 如果要匹配包含 n 在内的所有字符 一般使用 s
  • SpringCloud——pom文件初始配置

    SpringCloud pom文件初始配置 由于版本的不断更新 如果出现dependency XXX not found 更换版本号就行可以了
  • SuperSet 最新 Docker 部署文档(含元数据库切换、汉化、镜像导出)

    网上大部分文档还是 Python2 的部署方式 尤其是汉化 坑还有不少 使用最新docker镜像重新整理了一下 一 安装开源标准版 能够访问互联网 1 安装 docker 2 下载官方 docker 镜像 docker pull apach
  • Ajax和jQuery

    Ajax和jQuery 一 Ajax 1 Ajax概述 ajax Asynchronous JavaScript and XML Asynchronous 异步的 JavaScript 和 XML Asynchronous 异步的意思 Ja
  • vue2 webpack3 升级 webpack5 全过程,内附详细配置文件

    由于 webpack5 需要 node 版本 gt 10 13 0 请先将 node版本 升级 npm版本 用node自带的就可以了 官方最新的node版本好像不兼容下面的webpack5配置 建议升级成 LTS版本 这里我升级的是v14
  • uni-app中onLoad不起作用

    最近开始使用uni app 坑还是很多的 今天在使用onLoad是发现 页面上的onLoad方法是可以起作用的 但是组件中的onLoad方法并没有起作用 后来经过一番尝试后还是不行 看文档发现uni app 支持的页面生命周期函数是包含on
  • 《质量全面管控-从项目管理到容灾测试》读书笔记

    介绍 该书是葛长芝老师 结合案例讲解测试实践技术 主要内容有 项目管理 项目需求管理 代码质量控制 自动化部署 软件测试 安全测试与安全管理 自动化测试基础 自动化测试框架 性能测试 性能分析 监控平台与故障排查 灾难恢复与容灾测试等 这本
  • 怎样才能提升广告投放效果?牢记这5点!

    在我们的日常生活中 广告可以说一个随处可见 无所不在的一个事物 各行各业的组织 企业等都会进行广告宣传 以达到推广产品或建立企业形象等商业目的 广告虽然非常常见 覆盖率比较高 广告的代言人和展现形式也不尽相同 但并不是所有的广告都能达到预期
  • UE4C++ 如何在静态函数中SpawnActor

    最近在学习用C 复刻YouTube上的一个蓝图库存系统 其中在从背包中丢弃枪械 然后在世界中生成一个枪械Actor的时候遇到了问题 由于这个生成函数是在几个不同的类中复用的 YouTube原版的做法是把这个函数写在了GameState类里面
  • Java基础面试题附带答案

    091内部类可以引用它的包含类 外部类 的成员吗 有没有什么限制 一个内部类对象可以访问创建它的外部类对象的成员 包括私有成员 092Anonymous Inner Class 匿名内部类 是否可以继承其它类 是否可以 实现接口 可以继承其
  • 黑苹果睡眠唤醒usb失灵_(已解决)睡眠唤醒重启的问题

    Time stamp Domain Message Duration Delay UUID 0C11AC44 B57D 4895 8067 C95A
  • Intent详细用法介绍

    文章目录 Intent介绍 Intent属性 intent种类 intent过滤器 Intent介绍 Activity Service Broadcast通信 可传递Bundle Intent属性 Component name属性 通过se
  • 2020年网络系统管理改革试点评分标准四

    考核点11 在D盘查看备份文件 分数 5分 考点答案 考点解析 本题考查点 组策略备份 配置案例 依次选择 服务器管理器 工具 组策略管理 在 组策略管理 窗口中依次选择 林 域 ChinaSkills cn 右键单击 组策略对象 在弹出的
  • 2D Alpha Shape:基于二维Delaunay(德洛内)三角网的边缘点查找

    文章目录 0 效果 1 Delaunay三角网基本内容 2 Bowyer Watson算法 3 基于Delanay方法的Alpha Shape确定散乱点的边缘点 4 代码实现 C Opencv 5 参考 0 效果 点间距10 1 Delau
  • Arduino智能小车——超声波避障

    Arduino智能小车 超声波避障 Arduino智能小车系列教程时空门 Arduino智能小车 拼装篇 点击跳转 Arduino智能小车 测试篇 点击跳转 Arduino智能小车 调速篇 点击跳转 Arduino智能小车 超声波避障 点击
  • Linux自带的RHCS集群套件简单认识及kvm,qemu,libvirt的简单认识

    一 简介 RHCS即 RedHat Cluster Suite 中文意思即红帽集群套件 红帽集群套件 RedHat Cluter Suite RHCS 是一套综合的软件组件 可以通过在部署时采用不同的配置 以满足你的对高可用性 负载均衡 可
  • CoreData(数据库升级 )版本迁移-iOS App升级安装

    如果IOS App 使用到CoreData 并且在上一个版本上有数据库更新 新增表 字段等操作 那在覆盖安装程序时就要进行CoreData数据库的迁移 具体操作如下 1 选中你的mydata xcdatamodeld文件 选择菜单edito
  • MySQL多版本并发控制分析 事务

    2 行的更新过程 下面演示下事务对某行记录的更新过程 1 初始数据行 F1 F6是某行列的名字 1 6是其对应的数据 后面三个隐含字段分别对应该行的事务号和回滚指针 假如这条数据是刚INSERT的 可以认为ID为1 其他两个字段为空 2 事
  • Javascript中最常用的30个经典技巧

    这个是我从网上找到的 整理了一下 1 nc ntextmenu window event returnValue false 将彻底屏蔽鼠标右键 table border border td no td table 可用于Table 2 取
  • Unity3d离散仿真引擎基础

    1 解释对象与资源的区别与联系 对象 对象直接出现在游戏场景中 是资源整合的具体表现 对象一般有玩家 敌人 游戏场景 摄像机等虚拟父类 这些父类没有实例化 而他们的子类实例化并包含了这些游戏对象 我们可以对这些对象进行操作 资源 资源可以是